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

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

最佳答案

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

查看修订版,我会说这是一次异常运行,并且由于运行时网站服务器响应,结果可能会更长

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

关于javascript - 为什么在 javascript 中运行代码一次比运行四次慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23763342/

相关文章:

javascript - 在页面加载期间实例化匿名类

performance - 具有高基数字段的 ElasticSearch 术语和基数性能

testing - 你如何使用 go (golang) gocheck 测试框架的基准标志?

javascript - 如何在进行休息调用时更新 Angular-footable 值?

javascript - 通过与另一个数组的值比较来对数组进行排序

performance - 以编程方式访问 MacOS 系统性能统计数据

mysql - 使用 like vs group by 聚合函数的 SQL 查询 - 性能

linux - 为什么第二次 cp 命令更快

python - 使用 timeit() 和均值假设检验

javascript - 将 JSON 中的大数字解析为字符串