我已经编写了一个jsperf测试,它将迭代数组的循环与缓存数组长度条件和不缓存进行比较。我认为在每次迭代之前缓存变量以避免重新计算数组长度会更快,但jsperf测试则不然。有人能解释一下为什么吗?我还认为,在for循环的初始化中包含数组长度变量定义(缓存时)将减少时间,因为解析不需要两次查找"var“关键字,但情况似乎并非如此。没有缓存的示例:
for(var i = 0; i < testArray.length;
PART2 :
如果L1和L2都包含在内,那么为了找到L2的访问时间,我们首先声明一个大小大于L2缓存(256 to )的数组(1MB),然后开始访问整个数组以加载到L2缓存中。之后,我们访问数组元素从开始索引到结束索引,步长为64B,缓存线大小为64B。为了获得更准确的结果,我们重复这个过程(在索引处访问数组元素,开始结束)多次,比如100万次,并取平均值。我理解为什么这种方法给出了正确的结果,如下所示:当我们访问大小大于L2缓存大小的数组<