为什么在javascript中运行代码一次比运行四次慢?



查看代码和基准测试:http://jsperf.com/single-vs-multiple-times-2

我看到一个奇怪的行为在javascript。单次运行代码所花费的时间是多次运行代码的两倍。代码如下:

<<p> 准备代码/strong>
var MakeKeyCodepoint = function() {};
MakeKeyCodepoint.prototype.makeKey = function(word) {
  var len = word.length;
  if (len > 255) {
    return undefined;
  }
  var i = len >> 2;
  return String.fromCharCode(
    (word.charCodeAt(0) & 0x03) << 14 |
    (word.charCodeAt(i) & 0x03) << 12 |
    (word.charCodeAt(i + i) & 0x03) << 10 |
    (word.charCodeAt(i + i + i) & 0x03) << 8 |
    len
  );
};
var makeKeyCodepointObj = new MakeKeyCodepoint();

单次运行时间

var key = makeKeyCodepointObj.makeKey('www.wired.com');

运行4次

var key = makeKeyCodepointObj.makeKey('www.wired.com');
key = makeKeyCodepointObj.makeKey('www.youtube.com');
key = makeKeyCodepointObj.makeKey('scorecardresearch.com');
key = makeKeyCodepointObj.makeKey('www.google-analytics.com');

我在osx的chrome 34中运行它

看起来您正在对每秒的操作进行基准测试,而不是完成的时间。一次运行更多次会有更多的操作要执行,所以你的结果看起来是合理的

回顾修订,我会说这是一个异常运行,结果可能更长,由于网站服务器响应,当你运行它

第4版显示了我希望看到的内容

您需要修复您的基准,以便它实际做一些事情:http://jsperf.com/single-vs-multiple-times-2/5

应该正好慢4倍。

相关内容

  • 没有找到相关文章

最新更新