У меня есть следующий код Java с несколькими большими массивами, которые никогда не меняют свой размер. Он работает через 1100 мс на моем компьютере.
Я реализовал тот же код в С++ и использовал std::vector
.
Время реализации С++, которое работает с одним и тем же кодом, составляет 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.
Вы можете найти обе реализации по следующим ссылкам:
(На ideone я мог запускать цикл только 400 раз вместо 2000 раз из-за ограничения по времени, но даже здесь есть разница три раза)