Рассмотрите предварительное выделение для скорости [дубликат]

6
задан Alessandro Cuttin 24 March 2016 в 14:52
поделиться

2 ответа

Да. Каждый раз, когда вы ходите, ваш outderif блокирует размер Symbol_Chip , который дорого. Вместо этого перепишите свой код, чтобы у вас есть (сказать) Symbol_Chip = Zeros (MAX_SIZE, 1); Перед циклом. Затем измените содержимое, но не размер Symbol_Chip .

Вам нужно немного изменить свой подход, но это будет намного быстрее, если вы сделаете. Если вы не раздражены нынешней скоростью, ничего не меняйте!

10
ответ дан 9 December 2019 в 20:43
поделиться

M-LINT бросит это предупреждение, если у вас есть переменная, которая растет внутри цикла без предварительной обработки. Вы можете удалить эту ошибку, предварительно выделяя переменную коллекции.

Например, если вы знаете, что переменная Symbol_Chip будет иметь у большинства элементов i * j, вы могли бы отрастить его с оператором:

symbol_chip = zeros(i*j);

Однако для большинства приложений Preallocation будет иметь незначительное влияние на производительность алгоритма. Я только что беспокоился об этом, если вы имеете дело с очень большим набором данных.

2
ответ дан 9 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: