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

为什么在javascript中运行一次代码比运行四次慢,javascript,performance,benchmarking,Javascript,Performance,Benchmarking,请参见此处的代码和基准测试: 我在javascript中看到了一种奇怪的行为。一次运行代码所花费的时间是多次运行代码的两倍。代码如下: 准备代码 var MakeKeyCodepoint = function() {}; MakeKeyCodepoint.prototype.makeKey = function(word) { var len = word.length; if (len > 255) { return undefined; } var i = le

请参见此处的代码和基准测试:

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

看起来您是在测试每秒的操作,而不是完成时间。 一次运行更多次会有更多的操作要执行,因此您的结果看起来是合理的

回顾修订版,我会说这是一个异常运行,结果可能更长,因为运行时网站服务器响应


显示了我希望看到的内容

您需要修复您的基准,以便它能够实际执行某些操作:


应该慢4倍

我和OPI的结果是一样的,我不是在质疑结果是否如所描述的那样——我是在要求看它@JonasGrumann。结果是否被误读/误解?我认为差异最多为1%的运算/秒,browserscope摘要显示了与问题相反的趋势。我不这么认为。这是一组而不是一组完成所有操作的时间。