javascript - 运行 V8 时如何知道已编译哪些 javascript

标签 javascript google-chrome v8

我有 herd V8 编译“热代码”优化 JavaScript 性能。有什么方法可以告诉我哪些代码已编译,哪些代码未编译?

最佳答案

首先,您需要在 Chrome Javascript 控制台的“配置文件”选项卡中分析您的代码,以了解哪些内容值得测试。如果一个函数、模块或您尝试测试的任何内容不占用太多时间,那么它就不值得您付出努力。

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

console.time('order');
msort(ob);
console.timeEnd('order');

第一次运行 60000 个随机数在 8 毫秒后完成,接下来的所有运行都会跳到 16 毫秒左右。基本上,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

关于javascript - 运行 V8 时如何知道已编译哪些 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833179/

相关文章:

javascript - 音频ScriptProcessorNode outputBuffer在Chrome中仅包含0

javascript - 使用 js 的正则表达式定义,其中允许 4 后面任意两位小数,除了 404

javascript - 保存按钮上的确认按钮,如删除已经有

javascript - chrome 扩展 - 将外部照片加载到 img 中 - 避免混合内容

javascript - Chrome NaCl 与 V8 有什么关系吗?

node.js - V8引擎编译器错误报告

javascript - 如果我们创建新的原型(prototype)属性,对象会改变它的隐藏类吗?

javascript - 试图动态删除/添加隐藏类来操作 DOM

Javascript MouseOver/MouseOut 子事件

javascript - HTML5 表单显示 [object HTMLInputElement][object HTMLInputElement] 而不是两个数字相加的实际结果