写点什么

iPhone XS JavaScript 性能飙升背后的秘密

2018 年 11 月 30 日

iPhone XS JavaScript性能飙升背后的秘密

对 JavaScript 性能基准测试的初步评估显示,iPhone XS 和 iPhone XS max 的性能甚至超过了 iMac Pro。基准测试使用了Speedometer 2.0,主要针对真实世界的数据帧加载场景进行了比较。


Ruby on Rails 作者、Basecamp 创始人兼首席技术官 David Heinemeier Hansson 在 Twitter 上发起了一个讨论:


在Speedometer 2.0 JavaScript基准测试中,iPhone XS比iMac Pro速度更快。这是我测试过的最快的设备。比iPhone 8/iPhone X芯片高出45%。苹果是如何做到这一点的?!


这条推文引发了关于如何实现这种性能改进的重要猜测。


curiosity.ai 首席技术官 Rafael Oliveira 评论说,苹果似乎优化了他们的ARM JS编译器,远远超过 Mac 上的 x86:


但这就是重点——苹果似乎并没有针对x86 Safari做那么多优化,但他们却在ARM JS编译器上花了大心思……并不是说他们的CPU不令人印象深刻,只是在进行JS基准测试时,差异似乎被夸大了。


软件工程师 Greg Parker 指出,最新的 ARM 指令集 ARMv8.3-A针对JavaScript做了性能改进


ARMv8.3添加了一个从浮点数到整型的转换指令,超出范围的值按照JavaScript的方式处理。以前获取JavaScript语义的指令要慢得多。JavaScript的数字默认是双精度的,所以它需要进行很多转换。


ARM 确实发布了很多称为更新,也就是ARMv8.3-A,包括对 JavaScript 数据类型转换的改进:


JavaScript的数字使用的是双精度浮点格式。但是,它需要将这种公共数字格式转换为32位整数,以便执行位操作。从双精度浮点数到整数的转换以及检查转换的数字是否真的是整数是很经常发生的。


ARMv8.3-A 指令有助于将双精度浮点数转换为带符号的 32 位整数,以提高性能。


但事实证明,这并不是性能提升的原因,因为软件工程师 Saam Barati 解释说,iOS 12的Safari还没有利用这些指令


从初步报告以来,基于 ARMv8.3-A 指令的改进已经被用在了 WebKit 的 Nightly 构建版本中,并且预计将在 Safari 的未来版本中使用。Barati 已经注意到了各种JetStream2测试结果的性能改进:


在stanford-crypto-aes提升15%

在stanford-crypto-pbkf2提升30%

在stanford-crypto-sha256上提升97%


总体而言,如果不支持 ARMv8.3-A,预计这个修复将比当前版本的 Safari 增加 0.5-2%的整体性能提升。


Anandtech 的一份iPhone XS性能报告表明,新的内存子系统最有可能是 JavaScript 性能得到显著提升的原因:


内存子系统对403.gcc部分有效,对429.mcf、471.omnetpp、473.Astar和483.xalancbmk基本有效,A12性能也因此从30%提升到42%。很明显,新的缓存层次结构和内存子系统在这方面起到了很大作用,所以苹果能够在最近几代芯片上实现最重要的性能跳跃。


因此,尽管 ARM 改进对计算成本高昂的 JavaScript 运算很有用,但它们并不像内存子系统的改进那么重要。


因此,很多人都在问苹果何时将桌面电脑和笔记本电脑从英特尔转向 ARM,这是否会带来与今天类似的性能改进?


查看英文原文The Story behind Very Fast iPhone XS JavaScript Performance


2018 年 11 月 30 日 00:002455
用户头像

发布了 731 篇内容, 共 361.0 次阅读, 收获喜欢 1832 次。

关注

评论 1 条评论

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

接口测试怎么进行,如何做好接口测试

测试人生路

软件测试 接口测试

IntelliJ IDEA 2020.3正式发布,年度最后一个版本很讲武德

YourBatman

IDEA 新特性 2020.3

腾讯大牛整合Java+spring5系统学习架构,神乎其技

小Q

Java 学习 编程 面试 spring 5

即使不会node.js,拖拽就可完成数据的可视化展示

华为云开发者社区

node.js 数据 可视化

ONES 收购知名协作工具 Tower

万事ONES

团队协作 高效 研发管理工具 收购 资讯

【技术分享】浅谈RTC及Agora RTC SDK集成介绍

邵帅

面试无忧:源码+实践,讲到MySQL调优的底层算法实现

996小迁

Java 架构 面试

ONES 收购 Tower,五源资本合伙人对话两位创始人

万事ONES

项目管理 团队协作 ONES Tower 收购

新闻|Babelfish使PostgreSQL直接兼容SQL Server应用程序

PostgreSQLChina

数据库 postgresql 开源

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视

徐小夕

css3 前端 前端工程 CSS小技巧

架构师训练营第 1 期 -week11

习习

关于binlog,这个参数能不能用?

Simon

MySQL Binlog

一个真正0基础小白学习前端开发的心路历程

华为云开发者社区

开发 开发小白 0基础

想了解任务型对话机器人,我们先从自然语言理解聊起

华为云开发者社区

人工智能 机器人 自然语言

挑战赛 | 话题王者VS互动先锋(第一季)

InfoQ写作平台官方

话题讨论 活动专区

训练营第七周作业

大脸猫

极客大学架构师训练营

微软最强 Python 自动化工具开源了!不用写一行代码!

星安果

Python 微软 自动化 自动化测试 playwright

《技术男征服美女HR》—Fiber、Coroutine和多线程那些事

太白上仙

Java 程序员 面试 后端 多线程

Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)

linux大本营

c++ Linux 后台开发 架构师

性能压测

jorden wang

给你一个亿的keys,Redis如何统计?

不才陈某

redis

已拿腾讯后台开发岗offer,简单说下自己的面试经历和学习路线

程序员小灰

c++ 后台开发 架构师 TCP/IP Linux服务器开发

技巧收藏|10个JavaScript常用数组操作方法

华为云开发者社区

Java 数组 开发

英特尔神经拟态生态系统发展和研究的最新进展

intel001

加码线下,新荣耀“破题”场景经济

脑极体

javascript开发后端程序的神器nodejs

程序那些事

Java nodejs 后端开发 koa 程序那些事

国产电子表格Luckysheet后台也开源了!支持在线协作,一键docker私有部署

奇异石榴果

Java Excel SpreadJS 表格控件

架构师训练营第 11 周课后练习

叶纪想

极客大学架构师训练营

英特尔发布第二代Horse Ridge低温量子控制芯片

intel001

1分钟解密:博睿大数据核心引擎Bonree Zeus六大优势

BonreeAPM

英特尔推动集成光电的发展,用于数据中心

intel001

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

iPhone XS JavaScript性能飙升背后的秘密-InfoQ