我在 c++ (MSVS) 中进行了一些速度测试,得到了一个奇怪的结果。我正在测试使用一个 for 循环与多个嵌套 for 循环的速度。这是代码:
double testX = 0;
// Single loop executes in roughly 0.04 seconds
for( int i = 0; i < 27000000; i++ ){
testX += 1;
}
// Nested loop executes in roughly 0.03 seconds
for( int x = 0; x < 300; x++ ){
for( int y = 0; y < 300; y++ ){
for( int z = 0; z < 300; z++ ){
testX += 1;
}
}
}
如您所见,速度差异相当明显。我已经运行了很多次,这些是我看到的平均时间(这些是使用 glfwGetTime() 计时的)。
所以我的问题是:为什么?我的测试方法是否不足?我使用的循环太少了吗?我试过搜索谷歌,我能找到的唯一类似的问题将他的问题与缓存一致性有关,但由于这些 for 循环是空的,我认为它不会真正产生影响。
任何帮助都会得到帮助:)
编辑:多亏了评论,我意识到使用空的 for 循环可能不是测试事物的最佳方式......所以我更新了我的代码以将一些(非常)简单的操作变为双重。我也在发布模式下编译。然而,虽然这两种方法在时间上更加相似,但第二种方法仍然稍微快一些。
是的,这就是所有的测试代码(减去计时/输出功能,但这些并不完全针对问题)。