iPhone XS JavaScript性能飙升背后的秘密「建议收藏」

iPhone XS JavaScript性能飙升背后的秘密「建议收藏」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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107173.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 英语词根词缀记忆法总口诀_词根词缀记忆法的利弊

    英语词根词缀记忆法总口诀_词根词缀记忆法的利弊英语词根词缀记忆法(全集) 前言        英语单词的构词规律也是有规可寻的。单词是由词素构成的,词素派生出词义。单词的数量虽然浩瀚,但构成其的词素的数量却是有限的。如果掌握了词素,懂得基本的构词方法,就能容易地识记单词,突破记忆单词这一难关。词素又是由词根和词缀两部分组成的,而词缀又分为前缀和后缀。常用的252个词根和289个词缀,掌握了这些词素便可掌握绝大

    2022年9月19日
    0
  • docker 启动容器出现 Exited[通俗易懂]

    有时候在启动容器的时候,启动没报错,但是在执行dockerps-a时发现刚启动的容器状态为Exited(1),这个时候查看日志dockerlogs-f-t–tail20容器ID,发现报chown:changingownershipof’.’:Permissiondenied提示没有权限,这个时候将容器删除,在执行容器启动的命令中加入–privi…

    2022年4月17日
    1.3K
  • 使用volatile关键字的场景

    使用volatile关键字的场景

    2021年6月5日
    123
  • 狄利克雷近似定理_莫比乌斯反演例题

    狄利克雷近似定理_莫比乌斯反演例题首先定义几个概念:1,卷积:设是两个数论函数(也就是说,以自然数集为定义域的复数值函数),则卷积运算定义为可以证明,卷积运算满足:1)交换律:由定义显然。2)结合律:考察两边作用在上,左边是右边是故两边相等。3)存在单位元使得我们需要故不难猜到应该定义为事实上,直接验证可得以上说明数论函数在卷积意义下构成一个交换群。

    2022年10月28日
    0
  • 3d游戏建模全解[通俗易懂]

    3d游戏建模全解[通俗易懂]目前市面上随着3D游戏的兴起和VR的盛行,越来越多人对网络游戏越来越热衷,3D游戏建模设计师的需求也越来越广泛,市场缺口大,人才需求供不应求。但在大多数人的印象中,这个行业似乎很难入门,没有美术基础,好像丝毫没有机会进入这个行业。真的是这样吗?3D建模3D建模通俗来讲就是通过三维制作软件构建出具有三维数据的模型。在3DMAX中,建模各项最首要的就是感觉。需要感觉每个部件的大小。感觉各个部位所需要使用的材质、颜色等。需要把控整体的颜色效果。而这些可以说都和美术的基础挂钩的,尤其是颜色。颜色

    2022年5月11日
    42
  • unity 减少drawcall_unity scroll

    unity 减少drawcall_unity scroll一般我们在实时渲染中,DC也就是DrawCall都会尽可能的降低他,以为着,CPU与GPU的绘制沟通会减少啥叫:DrawCall已OpenGL为例,就是调用带有绘制功能的API的次数如:DrawCall:10次,那就意味着调用了glDrawXXXX的API10次啥叫:SetPassCallUnity中,就无缘无故多了个叫:SetPassCall的家伙其实早在以前的游戏引擎里,没有pass这么一个说法,说是techni的说法因为这些都是封装的功

    2022年9月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号