Найти тему
Строка кода

Крайности программистов при оптимизации

Речь пойдет о программистах без опыта которые хотят чтобы их программы были оптимизированы и программистах у которых нету опыта в новой области. Встречаются случаи которые больше мешают работать чем помогают создать хороший оптимизированный код. Основная проблема тут в том что банально нету опыта. Начинаются попытки оптимизировать то что вообще не нуждается во внимании. Довольно сложно подобрать обобщенный пример для примера можно взять два примера работа с сетью и работа со звуком.

При работе сетью был случай программист начал изобретать свой протокол, который как он думал продуманный, нету лишних данных и экономит трафик. С одной стороны он был прав, но нам пришлось просто оказаться от этого протокола из-за того что к нему нужна документация с ним нужно уметь работать, и то там то тут встречались баги мы просто за пару дней перешли на protobuf и избавились от кучи проблем. Оптимизация была? да действительно он чуть меньше кушал трафик но по итогу время на его разработку ушла в никуда. Как можно было избежать этой ошибки? Основное правило которые помогает, это не изобретать свой велосипед если уже есть готовое решение которое работает и не тормозит. Если бы мы сразу взяли protobuf и в процессе использования поняли что он работает медленно история была бы другая.

Работа со звуком\музыкой или DSP программирование это вообще отдельный мир. Когда в этот мир попадает обычный программист с опытом даже хорошим опытом много чему нужно будет учиться. Ну а что вы хотели, есть еще мир микроконтроллеров и драйверов. До этого оптимизация сводилась к структурам данных и иерархии классов а тут другие правила игры, тут главное что нужно оптимизировать это циклы избавляться от делений, возведение в степени, искать аппроксимации. Сидеть продумывать иерархию классов это практически пустая трата времени, если циклы работают медленно.

Как можно избежать всех этих ошибок? Главное правило которому нужно придерживаться если мы без опыта в этой области не делать оптимизацию при разработке а делать её в конце, в конце будет видна вся картина, где слабые места, что больше всего грузит. Тут мы можем взять отдельный кусок кода и начать с ним работать, потому что, мы знаем именно тут, самая большая нагрузка и это больше всего нам даст производительности и мы начинаем оптимизировать.