百科问答小站 logo
百科问答小站 font logo



为何浏览器控制台的JavaScript引擎性能这么差? 第1页

  

user avatar   rednaxelafx 网友的相关建议: 
      

题主先试试在Chrome的console里对比一下这四段代码:

       for (var i = 1; i <= 10; i++) {   console.time(i);   for (var j = 0; j <256*256*256; j++) { };   console.timeEnd(i); }  /* or the version below   eval("for (var i = 1; i <= 10; i++) {            console.time(i);                               for (var j = 0; j <256*256*256; j++) { };      console.timeEnd(i);                          }") */      

和:

       function foo() {   eval("for (var i = 1; i <= 10; i++) {            console.time(i);                               for (var j = 0; j <256*256*256; j++) { };      console.timeEnd(i);                          }") } foo()      

还有:

       function foo() {   (0,eval)("for (var i = 1; i <= 10; i++) {        console.time(i);                               for (var j = 0; j <256*256*256; j++) { };      console.timeEnd(i);                          }") } foo()      

最后:

       function foo() {   for (var i = 1; i <= 10; i++) {     console.time(i);     for (var j = 0; j <256*256*256; j++) { };     console.timeEnd(i);   } } foo()      

有没有惊喜?

在我的本上跑,

  1. 大概7600-8000ms
  2. 大概5600-6000ms
  3. 大概150-160ms
  4. 大概9-10ms

恭喜题主中了eval大招…细节解释起来略麻烦。回头有空再说…




  

相关话题

  已经 2022 年了,学习 JavaScript 继承方式的意义是什么? 
  为什么vscode中,js代码打开谷歌浏览器会弹出提示窗口? 
  为什么Python不能出一个类似V8的编译器? 
  为什么我电脑一百度“保存”这两个字就退出?而且保存不了文件。 
  Edge 浏览器当初为什么不是基于 Firefox 重构? 
  如何管理浏览器的书签(收藏)? 
  Mac 上最好的浏览器是什么? 
  为什么都说富文本编辑器是天坑? 
  如何衡量一个人的 JavaScript 水平? 
  如何评价 Webkit 推出的并发 JavaScript 提案? 

前一个讨论
为什么很多网民喜欢说「你支」,而不是好好称呼国家?
下一个讨论
装满的硬盘中是 1 多还 0 多?





© 2025-01-03 - tinynew.org. All Rights Reserved.
© 2025-01-03 - tinynew.org. 保留所有权利