我应该相信现代浏览器会为我优化代码吗?
Should I trust modern browsers to optimize code for me?
有没有JS编译器不优化这个循环?
for (var i = fromIndex; i < arr.length; i++) { ...}
在对谷歌关闭的批评中,据说更好的循环将是
for (var i = fromIndex, ii = arr.length; i < ii; i++) {
在我所知道的所有其他语言中,我相信编译器会为我做这些事情。我怀疑谷歌浏览器和现代浏览器会进行这些类型的优化......我错了吗?
该文章中还有更多示例,例如长开关案例,其性能可能很差。现在Chrome和FF 4.0仍然如此吗(我也听说过IE 9的好消息)?
上面的例子不一样。 如果你做前者,那么arr.length
将在每次循环迭代中被检查,并且本质上会表现得更差。 这样做的原因是假设您有以下循环:
for (var i = 0; i < arr.length; i++) {
arr.splice(i,1);
}
在这种情况下,无法缓存arr.length
,因为它的大小会在每次循环迭代中减小。 但是,在大多数情况下,数组在整个循环中将保持相同的长度,因此您应该像后一个示例中一样缓存长度,以防止额外的链查找。
大多数浏览器应该针对此类内容进行优化,但不能保证。无论如何,你真的不应该担心这种级别的优化,除非你做了很多循环。
No.它是解释器而不是编译器。
JavaScript 是动态的,你不能像使用静态语言那样进行那么多的优化。
事实上,你在 JavaScript 中拥有类型自由并且拥有 eval 意味着普通 (C++) 编译器对类似过程代码进行的大多数优化是不安全的。
此外,解释器的目的是尽可能快地解释您的代码并尽可能快地运行它。
编译器的目的是使代码尽可能快。
另外,Chrome,FF4(5)和IE9(10)速度很快。您不需要像这样进行微优化。虽然如果你确实有瓶颈,你仍然需要手动优化简单的东西(包括循环展开)
相关文章:
- JavaScript代码优化-创建可重用类
- 如何优化jquery动画代码
- 优化JavaScript代码
- 如何优化要在 javascript 字符串中使用的长 html 代码的创建
- 优化安卓代码
- 如何优化Jquery代码
- 优化javascript代码[repeats]
- 在运行时使用require-js切换出优化的代码
- setInterval代码的优化建议,该代码显示每秒出生的小狗、小猫等数量
- 使用闭包编译器简单优化从函数内部删除调试代码
- 如何优化此JavaScript代码片段
- $(document).ready() 在 IE 中使用 require.js 优化代码
- 如何优化代码以提高性能
- 优化代码.如何在循环中获取 2 个变量
- 优化代码以只定义一次变量,代码只有在变量处于变更函数中时才有效,对于变更之外的代码,我重新定义
- 如果重复多次,JavaScript是否缓存/优化代码
- Parallel.js/WebWorker和优化代码的问题
- 我应该相信现代浏览器会为我优化代码吗?
- 通过在AngularJS中传递目标元素来优化代码
- 抽象重复addEventListener('click'…函数来优化代码