首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行V8时,我如何知道编译了什么javascript

在运行V8时,我如何知道编译了什么javascript
EN

Stack Overflow用户
提问于 2016-01-16 23:09:22
回答 2查看 200关注 0票数 0

我有牧群V8编译“热代码”优化javascript性能。有什么方法可以告诉我已经编译了哪些代码,哪些代码没有呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-17 01:08:03

首先,您需要在Chrome的Javascript控制台的Profiles选项卡中分析您的代码,以确定什么是值得测试的。如果一个函数、模块或您想要测试的任何东西不需要花费太多时间,那么您的努力就不值得了。

V8的JIT将对您的代码进行假设,如果这些假设是正确的,代码将是闪电般的快。如果没有,V8将在您的程序继续运行时对该代码进行优化。举个例子,这是我自己测试的一个。在下面的代码中,我正在测试我编写的合并排序函数。

代码语言:javascript
复制
console.time('order');
msort(ob);
console.timeEnd('order');

60000个随机数的第一次运行在8ms之后完成,接下来的所有跳到大约16 8ms。基本上,JIT与我编写的东西有问题,所以它重新编译了我的代码。我已经看到了完全相反的情况,代码跳到两倍的速度。如果您想查看它,这不是确切的版本,而是使用es6模块语法。https://github.com/jamesrhaley/es2015-babel-gulp-jasmine/blob/master/src/js/mergeSort/mergeSort.js

另外,如果您的代码不值得优化,那么从一开始就不会对其进行优化。这里有几个链接帮助我在编写js时提高了速度。

https://www.youtube.com/watch?v=UJPdhx5zTaw

https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#so-how-does-javascript-work-in-v8

票数 1
EN

Stack Overflow用户

发布于 2016-01-17 06:19:05

如果您愿意构建一个独立版本的v8,您可以按以下方式运行shell:d8 --trace-opt foo.js (您还可能希望部署--trace-deopt,因为您的代码可能会被去优化(然后再重新优化))。

另一个有用的选项是--print-code,它将使您看到所有已编译函数的所有版本的机器代码,尽管这一版本可能是过分的。还有--print-opt-code

最后,使用d8 --help查看v8还可以采取哪些其他有用的选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34833179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档