node.js 中是否优化了匿名函数

问题描述 投票:0回答:1

我们以这段愚蠢的代码为例

for (let i = 0; i < 10; i++) {
  console.log(
    (function (x) {
      if (x % 2) {
        return 'even';
      } else {
        return 'odd';
      }
    })(i)
  );
}

基本上,我们有一个匿名函数,它在循环内或在另一个函数内被多次调用。 我想知道它是否在循环的每次迭代中重新创建,或者是否以某种方式进行了优化? 如果您能给我一些关于如何自己找到此类东西的提示,我将不胜感激。 谢谢!

javascript node.js profiling
1个回答
0
投票

看起来比较慢:

` Chrome/122
--------------------------------------------
outline  1.00x | x100000 222 230 232 234 236
inline   2.58x | x100000 573 577 580 594 600
--------------------------------------------
https://github.com/silentmantra/benchmark `

// @benchmark inline
for (let i = 0; i < 10000; i++) {
    (function (x) {
      if (x % 2) {
        return 'even';
      } else {
        return 'odd';
      }
    })(i)
}

// @benchmark outline
const fn = function (x) {
      if (x % 2) {
        return 'even';
      } else {
        return 'odd';
      }
    };
    
// @run

for (let i = 0; i < 10000; i++) {
  fn(i)
}

/*@end*/eval(atob('e2xldCBlPWRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3Rvcigic2NyaXB0Iik7aWYoIWUubWF0Y2hlcygiW2JlbmNobWFya10iKSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7dC5zcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9zaWxlbnRtYW50cmEvYmVuY2htYXJrL2xvYWRlci5qcyIsdC5kZWZlcj0hMCxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHQpfX0='));

© www.soinside.com 2019 - 2024. All rights reserved.