前端程序员应知应会之javascript基准测试套件 -威尼斯人2299

测试分享评论7字数 2210阅读7分22秒阅读模式
摘要

为了测试v8作为javascript引擎的性能,google随后也开发了一套v8基准测试套件,在运行时,v8基准套件会载入一些特定的javascript代码,从而测试引擎的内核、加密、解密、渲染等速度。而该套件也就成为了ja…

本文来自公众号活在信息时代。文章源自玩技e族-https://www.playezu.com/378167.html

对于前端程序员来说,v8引擎无疑是最为熟悉的工具之一了。v8是google开源的javascript和webassembly引擎,用c 编写。它用于chrome和node.js等。v8可以独立运行,也可以嵌入到任何c 应用程序中。文章源自玩技e族-https://www.playezu.com/378167.html

为了测试v8作为javascript引擎的性能,google随后也开发了一套v8基准测试套件,在运行时,v8基准套件会载入一些特定的javascript代码,从而测试引擎的内核、加密、解密、渲染等速度。而该套件也就成为了javascript引擎性能的标准。文章源自玩技e族-https://www.playezu.com/378167.html

在该套件的第七个版本中,一共包括了八项基准测试,最终得分为这八项测试得分的几何平均数。得分越高表明速度越快。这八项测试的具体内容如下:文章源自玩技e族-https://www.playezu.com/378167.html

一、richards基准

操作系统内核的模拟基准,最早出现于matin richards开发的bcpl中(539行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:属性加载/存储、函数/方法调用文章源自玩技e族-https://www.playezu.com/378167.html

次要关注点:代码优化、消除冗余代码文章源自玩技e族-https://www.playezu.com/378167.html

二、deltablue基准

单向约束求解,最早出现于john maloney和mario wolczko开发的smalltalk中(880行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:多态文章源自玩技e族-https://www.playezu.com/378167.html

次要关注点:oo 样式编程文章源自玩技e族-https://www.playezu.com/378167.html

三、crypto基准

tom wu开发的以代码为基础的加密解密基准(1698 行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:位运算文章源自玩技e族-https://www.playezu.com/378167.html

四、raytrace基准

adam burmister开发的以代码为基础的光线追踪基准 (904 行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:参数对象,应用文章源自玩技e族-https://www.playezu.com/378167.html

次要关注点:原型库对象,创建模式文章源自玩技e族-https://www.playezu.com/378167.html

五、earleyboyer基准

经典scheme 基准, 由florian loitsch的scheme2js编译器翻译为javascript (4684 行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:快速创建、销毁对象文章源自玩技e族-https://www.playezu.com/378167.html

次要关注点:闭包, 参数对象文章源自玩技e族-https://www.playezu.com/378167.html

六、regexp基准

正则表达式基准,从50多个最流行的网页中提取正则表达式操作所产生的(1761 行)。文章源自玩技e族-https://www.playezu.com/378167.html

关注点:正则表达式文章源自玩技e族-https://www.playezu.com/378167.html

七、splay基准

数据操作基准,处理伸展树和执行自动内存管理子系统 (394 行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:快速创建、销毁对象文章源自玩技e族-https://www.playezu.com/378167.html

八、navierstokes基准

根据奥利弗·亨特的代码,在2d上解决navierstokes方程,重操纵双精度数组。(387 行).文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:读取和写入数字数组。文章源自玩技e族-https://www.playezu.com/378167.html

次要关注点:浮点数学运算。文章源自玩技e族-https://www.playezu.com/378167.html

v8基准测试在早期的javascript引擎开发过程中应用广泛,很多js引擎都使用该基准测试用于评测其性能。常用的js引擎测试结果如下:文章源自玩技e族-https://www.playezu.com/378167.html

图片
文章源自玩技e族-https://www.playezu.com/378167.html

尽管v8基准测试套件非常经典,但是随着技术的发展,google又推出了新的基准测试套件octane 1.0和2.0,陆续增加了下列九项测试基准:文章源自玩技e族-https://www.playezu.com/378167.html

pdf.js:在javascript中实现了mozilla的pdf阅读器。它可以测量解码和解释的时间(33,056行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:数组和类型化数组操作。文章源自玩技e族-https://www.playezu.com/378167.html

次要关注点:数学运算和位运算,以及对未来语言功能(例如 promise)的支持文章源自玩技e族-https://www.playezu.com/378167.html

splaylatency:splay 测试侧重于虚拟机的垃圾回收子系统。splaylatency 对现有 splay 代码进行频繁测量检查点插桩。检查点之间长时间暂停表示 gc 延迟时间较长。此测试衡量延迟暂停的频率,将它们分类为分桶,并根据低分惩罚频繁的长暂停。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:垃圾回收延迟文章源自玩技e族-https://www.playezu.com/378167.html

mandreel:运行3d bullet物理引擎,该引擎通过mandreel将c 移植到javascript (277377行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:模拟文章源自玩技e族-https://www.playezu.com/378167.html

mandreellatency:与splaylatency 测试类似,此测试通过频繁的时间测量点对 mandreel 基准进行插桩。由于 mandreel 对虚拟机编译器施加压力,因此该测试会提供编译器引入的延迟指示。在测量点之间长时间暂停会降低最终得分。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:编译器延迟时间文章源自玩技e族-https://www.playezu.com/378167.html

gb emulator:全部采用javascript模拟便携式控制台的架构,以及运行所需的3d模拟(11,097行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:模拟文章源自玩技e族-https://www.playezu.com/378167.html

code loading:测量javascript引擎在加载了一段大型的javascript程序后开始解码的速度有多快,一个常见的实例为social widget。该测试的源代码来自开源代码库(closure, jquery)(1,530行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注内容:javascript 解析和编译文章源自玩技e族-https://www.playezu.com/378167.html

box2dweb:基于流行的2d物理引擎box2dweb,最初由erin catto编写,现被移植到javascript。(560行,9000 精简版)文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:浮点数学运算。文章源自玩技e族-https://www.playezu.com/378167.html

次要关注点:包含double的属性、访问器属性。文章源自玩技e族-https://www.playezu.com/378167.html

zlib:从mozilla emscripten套件执行的zlib asm.js/emscripten测试(在工作负载1中运行)。代码包含在eval()中,它保证我们测量的运行时间包括在所有浏览器上解析和编译(2,585行)。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:代码编译和执行文章源自玩技e族-https://www.playezu.com/378167.html

typescript:microsoft&type 39 typescript编译器是一款复杂的应用。此测试用于衡量typescript编译本身所需的时间,它代表虚拟机在处理复杂、可调整大小的javascript应用(25918行)方面的表现。文章源自玩技e族-https://www.playezu.com/378167.html

主要关注点:运行复杂、繁重的应用文章源自玩技e族-https://www.playezu.com/378167.html

除此之外,常用的javascript基准测试工具还有mozilla发布的kraken、苹果的jetstream、以及speedometer和speed-battle等。文章源自玩技e族-https://www.playezu.com/378167.html

注意:本文法律责任由该作者承担,侵权请联系▷诈骗举报◁▷新闻不符◁▷我要投稿◁
免责声明:本文内容来自用户上传并发布或网络新闻客户端自媒体,玩技博客仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系删除。

发表评论

匿名网友
确定