green_fr: (Default)
green_fr ([personal profile] green_fr) wrote2018-01-17 09:42 am

Оптимизация кода

Объяснил коллеге, зачем нужно преаллокация памяти. Понимаешь, говорю, если добавлять строчку за строчкой в матрицу, то каждый раз MatLab ищет новое место в памяти, копирует туда уже сделанную матрицу и дописывает новую строчку. А если ты сразу сказал ему, сколько у тебя будет строчек — он сразу столько выделил и ничего никуда не копирует.
Понял? Понял!

Сегодня просматриваю написанный им код. В одном месте ему нужна переменная, которую он запишет в Excel. Размер заранее посчитать нетривиально. Преаллокация на 500000 (пятьсот тысяч) строк, из которых реально заполняется две с чем-то тысячи. Команда записи этой матрицы в Excel рушит мой комп...

[identity profile] green-fr.livejournal.com 2018-01-18 10:38 am (UTC)(link)
В такой формулировке (последнего параграфа) я полностью согласен. Но с моими коллегами (описанный мною коллега пишет больше и лучше всех остальных) можно инвертировать фразу, и смысл её поменяется. Да, сложно предугадать, какой метод оптимизации будет лучше. Но зачатую можно с лёгкостью сказать, какая чушь гарантированно замедлит рассчёт. Я регулярно вычёркиваю из проекта тупо дублирующие друг друга рассчёты - не надо быть гением, чтобы понять влияние (не несущего никакого дополнительного смысла) дублирования кода на скорость рассчётов :-)