为什么运行代码的时间比在javascript中运行四次要慢

时间:2014-05-20 14:58:36

标签: javascript performance benchmarking

请参阅此处的代码和基准:http://jsperf.com/single-vs-multiple-times-2

我在javascript中看到一个奇怪的行为。单次运行代码所需的运行次数是运行多次的两倍。以下是代码:

准备代码

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');

连续四次

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中运行它。

2 个答案:

答案 0 :(得分:1)

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

审核修改后我会说这是一个异常的运行,并且由于网站服务器响应而导致结果可能更长

Revision 4显示了我期望看到的内容

答案 1 :(得分:0)

您需要修改基准,以便实际执行某些操作:http://jsperf.com/single-vs-multiple-times-2/5

应该给出恰好4倍的速度。