Как стать автором
Обновить

Про оптимизацию кода

Время на прочтение2 мин
Количество просмотров1K
Кодер Один мой знакомый получил работу в очень престижной конторе по разработке устройств связи уоки-токи, мобильные и так далее. Контора надо сказать очень большая и входит в ТОП-50 по этой сфере индустрии.

И из-за такого размера в конторе было очень много бюрократических моментов — согласований, совещаний и уходило на общение очень много времени. Программисты там были в большей части индусы и делали они свою работу очень неторопливо, медитируя так сказать в рабочее время.

Но не таков характер нашего человека! Он свою работу быстро сделал и пинать вола ему быстро надоело, тем более что весь трафик мониторился — особо нигде не полазишь.

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

Полазив он нашел странную вещь. Сам модуль был написан очень давно и для вычисления синусоиды использовались таблицы с предгенеренным значением, занимая столь ценную память. Так как современные контроллеры несли эту функцию уже в себе (те же таблицы в самом кристалле).

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

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

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

Экспертиза показала что причиной стал выход из строя того самого микроконтроллера из-за перегрева. Догадались в чем дело?

Конечно, при использовании встроенных таблиц контроллер начинал работать быстрее и соответсвенно быстрее нагревался. О том, что задержка при обращении к банку памяти использовалась еще и как холостой цикл для охлаждения — он не подумал. А индус, который писал код — ничего про это не написал в комментариях.

Партию отозвали, а его уволили. И это не смотря на то, что он доказывал, если вставить холостые циклы в его код, то микроконтроллер уже не будет перегреваться. Но его никто не слушал.

Отсюда мораль:
Незная брода — не лезь в воду.
Код без комментариев — это плохо.
Бюрократическая машина — это ужасно.
Руководство, которое не дает второго шанса — это кошмар.

Вот такая вот поучительная история.
Теги:
Хабы:
Всего голосов 86: ↑49 и ↓37+12
Комментарии18

Публикации