Why does JavaScript code execute faster over time?(为什么随着时间的推移,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代码的执行速度会更快?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么随着时间的推移,JavaScript代码的执行速度会更快?
基础教程推荐
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 动态更新多个选择框 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01