Chrome认为99,999与100,000截然不同。

7 浏览
0 Comments

Chrome认为99,999与100,000截然不同。

当有人发布了一个与我之前运行的几乎相同的jsperf基准测试冲突的时候,我遇到了一个非常有趣的问题。

在这两行代码中,Chrome做出了非常不同的处理:

new Array(99999);  // jsperf ~50,000 ops/sec
new Array(100000); // jsperf ~1,700,000 ops/sec

基准测试链接:http://jsperf.com/newarrayassign/2

我想知道这里到底发生了什么!

(为了澄清,我正在寻找一些关于V8内部的低级细节,比如它在一个情况下使用了不同的数据结构以及这些结构是什么)

0