下面的 Java 代码有几个大数组,它们的大小从不改变。它在我的电脑上运行1100毫秒。
我在 C + + 中实现了相同的代码,并使用了 std::vector
。
在我的计算机上运行完全相同代码的 C + + 实现的时间是8800毫秒。我到底做错了什么,让它跑得这么慢?
该守则基本上做到了以下几点:
for (int i = 0; i < numberOfCells; ++i) {
h[i] = h[i] + 1;
floodedCells[i] = !floodedCells[i];
floodedCellsTimeInterval[i] = !floodedCellsTimeInterval[i];
qInflow[i] = qInflow[i] + 1;
}
它迭代不同的数组,大小约为20000。
你可在以下连结找到这两个实施方案:
(由于时间限制,我只能运行400次循环,而不是2000次。但即使在这里也有三倍的差别)