【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

用 Google 的 Native Client 提高 Web 应用程序的性能

  • 2010-04-15
  • 本文字数:888 字

    阅读完需:约 3 分钟

为了提高 CPU 密集型 Web 应用程序的性能,Google 正在开发

Native Client(本地客户端),一个运行本地代码的浏览器技术。不像 Netscape 的

NPAPI 或微软的

ActiveX 插件技术,Native Client 运行在双沙箱里,从而被禁止访问底层的操作系统。

提高 Web 应用程序性能的一个方法是让浏览器运行本地的应用程序。这种方式运行本地代码通常比 Javascript 要快。但是这样会导致严重的安全问题,比如访问数据或者创建额外的网络连接。这是针对 NPAPI 和 ActiveX 的主要诟病之一。Native Client 希望能通过在一个特别的沙箱里运行本地应用程序并禁止访问底层操作系统的方式来解决这个问题。本地应用可以使用 CPU 以及与 Native Client 交互。

> 1. 提供一个不依赖于 ISA 的格式来编译 NaCI 模块,来支持广泛流行的目标平台,而不需要重新编译代码。
>
> 2. 让 NaCI 开发者很容易的构建、测试以及部署可移植执行模块。
>
> 3. 开始的时候支持 x86-32、x86-64 以及 ARM 指令集 ,但将来会直接支持其他流行的通用 CPU。
>
> 4. 保持 Native Client 的安全和性能

为了让开发者更容易开发,Native Client 模块可以用任何语言实现,然后被编译成

LLVM (底层虚拟机) 二进制编码。LLVM 是一个编译基础架构,它提供 ISA 中立性,所以原来的代码不需要被移植到不同的目标平台。二进制代码被进一步优化并保存到一个文件中。如果一个网页包含类型为 Native Client 的标签,浏览器就会创建相应的环境并下载相应的 LLVM 文件。接着二进制代码就被翻译成为本地代码并被解析,以确保它不会执行非法操作。然后才会执行原定的 CPU 操作。开发者只需要编写一次就可以部署到多个架构上,中间的 LLVM 层甚至能让模块在写代码时还不存在的更新的架构上运行。

Google 已经创建了支持以下平台的 Native Client

:Windows、Max OS X 以及 Linux x86-32、x86-64 和 ARM,而且对任何有兴趣的架构都是开放的。该

基准表明 Native Client 应用程序在 x86 和 ARM 上以普通应用程序 97% 的速度运行。Native Client 可以运行在

Firefox、Safari、Opera 以及 Google Chrome 应用程序的例子比如经典游戏 Quake,互动分形动画软件 Xaos 以及 Lua——一个脚本引擎。

2010-04-15 04:503422
用户头像

发布了 42 篇内容, 共 17.1 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

Linux常用统计命令大全

霍格沃兹测试开发学社

低代码的高性价比,企业:嘎嘎香!

EquatorCoco

低代码 企业开发 项目开发 企业转型

Python实现企业微信自动打卡程序二:跳过节假日,随机打卡时间,定时任务,失败通知

快乐非自愿限量之名

Python 软件开发 打卡

软件测试学习笔记丨Allure2运行方式&问题调试

测试人

软件测试

程序员必备开发工具(IDE)推荐

霍格沃兹测试开发学社

WebRTC构建点对点的即时通讯工具

鲸品堂

工具 企业号 3 月 PK 榜

面试官:微服务通讯方式有哪些?

王磊

Java 面试

Redis介绍与使用指南

霍格沃兹测试开发学社

《实现领域驱动设计》-聚合

不在线第一只蜗牛

DDD

【FAQ】推送获取push token报错6003,如何排查?

HMS Core

HarmonyOS

Graph+LLM 更进一步|悦数图数据库推出 AI 知识图谱构建器及图语言生成助手

最新动态

走进甲骨文云服务器:打造专属的云资源管理空间

Geek_2d6073

Vue3 - 表单的输入与绑定

霍格沃兹测试开发学社

有点害怕,浏览器插件风险这么多?

高端章鱼哥

深度!10个头脑风暴必备的模板,让脑暴更高效和富有成效!

彭宏豪95

思维导图 头脑风暴 在线白板 在线协作 效率软件

如何在 Windows 系统电脑中安装 CentOS 7 虚拟机

霍格沃兹测试开发学社

智能合约开发:每周加密货币回顾(2024年3月11日)

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发

Asp .Net Web Forms 系列:配置图片防盗链的几种方法

EquatorCoco

Web asp

Linux查看文件内容常用命令

霍格沃兹测试开发学社

Vue常用指令-条件渲染(v-if)

霍格沃兹测试开发学社

深入理解 Nginx:原理和基础介绍

霍格沃兹测试开发学社

甲骨文云中的区间管理:从基础到策略

Geek_2d6073

COB封装小间距LED可在哪些领域发挥潜能?

Dylan

技术 cobra LED LED display LED显示屏

从ESB总线到iPaaS集成平台,如何选择最佳集成方案

RestCloud

ESB 系统集成 ipaas

探索PyTorch:介绍及常用工具包展示

霍格沃兹测试开发学社

软件测试学习笔记丨数据库基础知识

测试人

数据库 软件测试

淘宝API接口开发系列,接口封装,淘宝开放平台API接口

Anzexi58

API API 接口 API 文档

掌握 Postman:请求头使用指南

Liam

Java 程序员 后端 Postman API

今天来聊聊Hybird app技术

FinFish

小程序容器 跨端框架 Hybird App Hybird开发

多平台小程序一站式管理工具推荐~

Geek_2305a8

灰度发布难以追踪?你可能用错了工具

观测云

可观测性

用Google的Native Client提高Web应用程序的性能_Google_Abel Avram_InfoQ精选文章