В процессе анализа того, насколько быстро может быть тривиальная петля, я столкнулся с этим странным явлением.
Ничего не делать с переменной гораздо медленнее, чем что-то делать с ней.
Конечно, это не настоящая проблема, поскольку вы не будете часто испытывать желание писать код, который ничего не делает, но это меня удивило, поэтому я задаюсь вопросом, понимает ли кто-то, что происходит, и может ли это быть проблемой в реальных ситуациях.
Вот что я нашел:
tic,for t= 1:1e6, x=x; end,toc %This runs very fast, about 0.07 sec
y=x; tic,for t= 1:1e6, y=x; end,toc %This runs fast, about 0.11 sec
tic,for t= 1:1e6, x; end,toc %This takes over half a second?!
Я попытался добавить тривиальный расчет в цикле, чтобы убедиться, что цикл не будет оптимизирован, но это не изменило результаты.
Подводя итог, мой вопрос:
Что происходит, и я должен когда-либо беспокоиться об этом?