Подтвердить что ты не робот

Почему Matlab Profiler говорит, что есть узкое место в терминах "конца" цикла "за"?

Итак, я недавно начал использовать встроенный профилировщик Matlab на регулярной основе, и я заметил, что, хотя обычно он отлично показывает, какие строки занимают больше всего времени, иногда он расскажет мне о большом кусок времени используется в выражении end цикла for.

Теперь, видя, что такая строка используется только для обозначения конца цикла, я не могу себе представить, как она может использовать что-либо, кроме тривиального количества обработки.

Я видел конкретную версию этого вопроса, заданную matlab central, но консенсус, похоже, не был достигнут.

EDIT: Здесь минимальный пример этой проблемы:

for i =1:1000
    x = 1;
    x = [x 1];
    % clear x;
end

Даже если вы раскомментируете clear, строка end все еще занимает много вычислений (около 20%), а clear фактически увеличивает абсолютный объем вычислений, выполняемых конечной строкой.

4b9b3361

Ответ 1

Когда я видел это в своем коде, это было освобождение больших времен, созданных в цикле. Каждая новая переменная, созданная в цикле, освобождается от end.