Почему профилировщик Matlab сообщает, что существует узкое место в операторе конца цикла for?

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

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

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

EDIT: Он Вот минимальный пример этой проблемы:

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

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

11
задан Wolfie 21 August 2017 в 07:21
поделиться