Два цикла делают одну и ту же работу с одними и теми же данными — суммируют миллион чисел — но один заметно быстрее другого. Алгоритм одинаковый, сложность одинаковая, «Big O» одинаковый. Разница не в логике, а в том, в каком порядке цикл обращается к памяти. Это решается не в вашем коде, а на уровне кеша процессора — и решается ещё до того, как выполнилась первая инструкция цикла. Разберём, как это работает и почему порядок обхода данных иногда важнее, чем сам алгоритм.
Подробнее →