Arm原生Google Chrome增强Windows on Arm性能

描述

作者:Arm 开发者大使 Dawid Borycki

微软 Windows 10 和 Windows 11 集成了 Arm 原生支持,这保证了为 Windows 开发更多 Arm 原生应用。这种支持提供了额外的工具,以简化应用移植、增强应用性能并降低功耗。因此,很多公司目前正在为 Windows 投资 Arm 原生应用。  

此前,Arm 曾谈到 Windows on Arm 应用生态系统的良好发展势头,Google Chrome 就是一个很好的例子。与此同时,我们也想通过探索原生 Arm 支持为 Google Chrome 带来的诸多改进来进一步印证这一点。

适用于 Google Chrome 的 AArch64 支持

最新版本的 Google Chrome 增加了对 Windows 的原生 AArch64 支持,为用户带来诸多优势,包括:

提升性能:Arm 原生支持使 Google Chrome 网页浏览速度更快,效率更高,与模拟的 x86 版本相比,性能有了显著提高。

加快网页加载:得益于 Arm 原生支持对脚本、系统任务和渲染过程的优化,原本加载较慢的网站现在能够更快地完成加载。

增强的 JavaScript 执行:在 Arm 原生代码运行时,JavaScript 执行速度明显加快,增强了网页应用和交互元素的响应能力。

延长电池续航时间:Arm 原生代码的高能效使用户可以更长时间地使用设备,而无需频繁充电。

卓越的渲染速度:渲染时间大大缩短,使网页显示变得更快速、更顺畅。

模拟 x86 与 Arm 原生的性能对比

为了更清晰地展示这些优势,我们在 x86_64 架构的 Windows 系统上安装了 Google Chrome (版本号为 125.0.6422.61,官方版),下文简称“Win64”,并在 Windows on Arm 环境中通过模拟方式运行;同时,我们还在 AArch64 架构的 Windows 系统上安装了原生版本的 Chrome,下文简称“Arm64”。我们利用这两个版本的 Chrome 对一个热门新闻网站的性能进行了对比分析。

我们使用 Google Chrome 开发者工具中的“性能”选项卡,量化了加载和渲染速度。

模拟 x86 版本:网站加载耗时近 16 秒,其中脚本(4.4 秒)、系统任务(1.7 秒)和渲染(0.9 秒)花费了大量时间。 

Arm 原生版本:脚本时间减少至 1.5 秒(几乎缩短了三倍),系统任务时间减少至 0.4 秒(缩短 4.25 倍),渲染时间减少至 0.18 秒(缩短五倍),表明原生 Arm 执行大大提升了加载和渲染速度。

在其他新闻网站进行的性能测试也得出了类似结果。 

Speedometer 3.0 基准测试

我们使用了 Speedometer 3.0 网页浏览器基准测试,来进一步印证 Arm 原生版 Google Chrome 的性能优势。这是一项开源基准测试,通过对不同工作负载下模拟的用户交互进行计时,用来测定网页应用的响应能力。

基准测试任务旨在反映实际网页用例情况,尽管部分细节与 Speedometer 相关,不应作为通用的应用开发实践。该基准测试由主流浏览器引擎(Blink、Gecko 和 WebKit)的团队创建,并得到了 Google、英特尔、微软和 Mozilla 等公司的大力支持。

在模拟 x86 和 Arm 原生版 Google Chrome上运行 Speedometer 3.0 基准测试后(在 Windows Dev Kit 2023 上测试),发现 Arm 原生支持显著增强了网页应用的响应能力。上图显示了 Arm 原生性能得分比模拟 x86 高出三倍多。这进一步凸显了 Windows on Arm 上原生 Arm 应用的出色效率和性能。

用 TensorFlow.js 和 MobileNet 运行推理

TensorFlow.js 是 Google 广受好评的 TensorFlow 库的 JavaScript 实现。它允许开发者在构建交互性强、动态性高的浏览器应用时,运用人工智能 (AI) 和机器学习 (ML) 技术。通过 TensorFlow.js,用户可以直接在客户端环境中训练和部署 AI 模型,轻松实现实时数据处理和分析,无需大量的服务器端计算。

MobileNet 是一类专为移动端和嵌入式视觉应用设计的高效架构,凭借其轻量级设计脱颖而出,能够在计算能力和内存资源有限的设备上实现快速高效的性能。

在使用 TensorFlow 的 Python 应用中,使用 MobileNet 非常简洁明了:

Python:

model = MobileNet(weights='imagenet')

接着,就可以对输入的图像进行预测 (predictions):

predictions = model.predict(input_image)

请参阅教程以获得更好的训练和推理示例。

然后这些预测结果可以转换为实际标签,比如:

print('Predicted:', decode_predictions(predictions, top=3)[0])

这里的 decode_predictions 是一个假设函数,它的作用是将模型分数(概率)转换为描述图像内容的标签。

TensorFlow.js 提供了类似的接口,你可以这样加载 MobileNet 模型:

model_tfjs = awaittf.loadGraphModel(MOBILENET_MODEL_PATH)

等图像预处理完,就可以进行预测了:

predictions = model_tfjs.predict(image)

然后,把这些预测结果转换为标签或类别:

labels = await getTopKClasses(predictions, 3)

如需更好的网页应用示例,请参阅此示例。

我们在模拟 x86 Chrome 网页浏览器和 Arm 原生版 Chrome 中运行了上述网页应用。

下图演示了在 Chrome 网页浏览器中运行的网页应用。该应用的用户界面包含三个核心元素:描述部分、状态指示器和模型输出显示。描述部分介绍了应用是如何创建的。上传图像后,应用立即开始运行,状态组件会实时更新,以显示计算时间。图像处理完成后,模型输出会显示识别出的标签及其相应的分数。

在模拟 x86 Chrome 上,包括图像预处理和 AI 推理在内的总处理时间接近 100 毫秒。而在 Arm 原生版 Google Chrome 上,同样的操作仅花费 35 毫秒(大约为前者的 33%)。由于使用了相同的图像作为输入,因此推理结果(识别的标签和分数)是相同的。

提升真实性能,满足实际需求

在 Google Chrome 的 Windows 版本中集成原生 Arm 支持,可大大提升性能,使网页浏览速度更快、效率更高、响应能力更强。这些改进在一般的网页浏览和特定应用(如包含 MobileNet 的 TensorFlow.js)中都很显著,凸显了 Arm 原生支持在更广泛的计算领域日益增长的重要性。随着更多公司投资适用于 Windows 的 Arm 原生应用,用户可以期待在各类设备和应用上效率和性能的持续提升。

Arm 致力于推动创新,提供前沿技术,赋能开发者并提升用户体验。Arm 原生支持在 Google Chrome 中的成功应用彰显了 Arm 架构在塑造未来计算方面的革新潜力。

若你有兴趣学习如何将应用迁移到 Arm 平台上,欢迎访问 Arm Developer Hub 中的丰富教育资源。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分