Как-то раз на досуге придумал пару небольших задачек про производительность. В каждой из задач два варианта исполнения одного и того же кода, только один из них исполняется сильно медленее другого. Вопрос в том, чтобы обьяснить почему так.
потому что массив идет последовательно. В первом примере ты подряд проходишься по всем элементам. Во втором скачешь между массивами, а они в памяти далеко друг от друга.
потому что массив идет последовательно. В первом примере ты подряд проходишься по всем элементам. Во втором скачешь между массивами, а они в памяти далеко друг от друга.
Ну вот. В подобных случаях компилятор тебе никак не поможет.
процессор считает что данные последовательно будут у тебя вызываться поэтому загружает в кеш первый массив. А ты говоришь что тебе нужен другой массив в следующей операции.