为什么随着时间的推移,JavaScript代码的执行速度会更快? [英] Why does JavaScript code execute faster over time?

查看:39
本文介绍了为什么随着时间的推移,JavaScript代码的执行速度会更快?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在解决这个问题,发现了一些有趣的行为。基本上,如果我连续多次对相同的代码进行基准测试,代码的执行速度会显著加快。

代码如下:

http://codepen.io/kirkouimet/pen/xOXLPv?editors=0010

以下是Chrome的截图:

有人知道发生了什么事吗?

我正在检查性能:

var benchmarkStartTimeInMilliseconds = performance.now();
...
var benchmarkEndTimeInMilliseconds = performance.now() - benchmarkStartTimeInMilliseconds;

推荐答案

Chrome V8优化编译器最初编译代码时不进行优化。如果您的代码的某个部分经常被执行(例如函数或循环体),V8会用优化的版本(即所谓的堆栈上替换)替换它。

根据https://wingolog.org/archives/2011/06/08/what-does-v8-do-with-that-loop

V8始终将JavaScript编译为本机代码。V8第一次看到 一段代码,它快速地编译它,但不优化它。这个 初始的未优化代码是完全通用的,可以处理所有不同的 人们可能会看到的案例,还包括一些类型反馈代码, 记录在中的各个点上看到的类型 程序。

启动时,V8派生一个分析线程。如果它注意到一个 特定的未优化程序很热,它收集记录的类型 该过程的反馈数据,并使用它来编译优化的 程序的版本。然后替换未优化的旧代码 使用新的优化代码,该过程将继续

其他现代JS引擎也以类似的方式识别并优化这些热点。

这篇关于为什么随着时间的推移,JavaScript代码的执行速度会更快?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆