Итак, я недавно начал использовать встроенный профилировщик Matlab на регулярной основе, и я заметил, что, хотя обычно он отлично показывает, какие строки занимают больше всего времени, иногда он расскажет мне о большом кусок времени используется в выражении end
цикла for
.
Теперь, видя, что такая строка используется только для обозначения конца цикла, я не могу себе представить, как она может использовать что-либо, кроме тривиального количества обработки.
Я видел конкретную версию этого вопроса, заданную matlab central, но консенсус, похоже, не был достигнут.
EDIT: Здесь минимальный пример этой проблемы:
for i =1:1000
x = 1;
x = [x 1];
% clear x;
end
Даже если вы раскомментируете clear
, строка end
все еще занимает много вычислений (около 20%), а clear
фактически увеличивает абсолютный объем вычислений, выполняемых конечной строкой.