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

крайнощі програмістів при оптимізації

Йтиметься про програмістів без досвіду які хочуть щоб їх програми були оптимізовані і програмістів у яких немає досвіду в новій області. Зустрічаються випадки які більше заважають працювати ніж допомагають створити хороший оптимізований код. Основна проблема тут в тому що банально немає досвіду. Починаються спроби оптимізувати то що взагалі не потребує уваги. Досить складно підібрати узагальнений приклад для прикладу можна взяти два приклади робота з мережею і робота зі звуком.

При роботі мережею був випадок програміст почав винаходити свій протокол, який як він думав продуманий, немає зайвих даних і економить трафік. З одного боку він мав рацію, але нам довелося просто відмовитися від цього протоколу через те що до нього потрібна документація з ним потрібно вміти працювати, і то там то тут зустрічалися баги ми просто за пару днів перейшли на protobuf і позбулися купи проблем. Оптимізація була? да дійсно він трохи менше їв трафік але за підсумком час на його розробку пішла в нікуди. Як можна було уникнути цієї помилки? Основне правило які допомагає, це не винаходити свій велосипед якщо вже є готове рішення яке працює і не гальмує. Якби ми відразу взяли protobuf і в процесі використання зрозуміли що він працює повільно історія була б інша.

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

Як можна уникнути всіх цих помилок? Головне правило якому потрібно дотримуватися якщо ми без досвіду в цій галузі Не робити оптимізацію при розробці а робити її в кінці, в кінці буде видна вся картина, де слабкі місця, що найбільше вантажить. Тут ми можемо взяти окремий шматок коду і почати з ним працювати, тому що, ми знаємо саме тут, найбільше навантаження і це найбільше нам дасть продуктивності і ми починаємо оптимізувати.



ЩЕ ПОЧИТАТИ