为什么此代码在不同的值上表现不同

时间:2015-09-19 10:45:19

标签: javascript

此代码:

googleTranslate.translate('Hello', 'de', function(err, translation) {
  console.log(translation);
  // =>  { translatedText: 'Hallo', originalText: 'Hello', detectedSourceLanguage: 'en' }
});

问题是:为什么这些版本会同时获得较小的i值?如果我从i中减去一个零;所有版本都需要2.2秒。 (甚至在JIT优化后测试 - 仅在V8中测试)

合乎逻辑的是,第三个版本应该总是更快,但只有非常高的值才会更快。

这只是一种好奇心......实际上并不重要。

1 个答案:

答案 0 :(得分:0)

处理器,操作系统和解释器可能会以难以预测的方式干扰您的编程速度。这就是为什么用大哦符号来评估算法的原因。

速度可能与此不同的原因之一是,如果只有一个零,则i的值只能使用32位表示。因此,解释器生成的汇编代码可以执行优化并使用32位整数的指令。

同样,最后一个代码中i的值被转换为32位整数,从而改变迭代次数,这就是为什么当i的值不能仅使用Set表示时它执行得更快的原因32位。