Щоденник програміста, Різне, Програмування, статті

Давно не оновлював свій блог, пора б це зробити. У цьому повідомленні хотів би поділитися своїми поглядами на оптимізацію програм. Скажу відразу, для досвідченого програміста тут навряд чи буде щось нове.

Мені часом здається, що існує певна категорія програмістів, які вважають що саме головне в програмі – це максимальний ступінь оптимізації. Схильний з цією думкою не погодиться. Відповідаючи на запитання, що саме головне, потрібно дивитися з двох різних точок зору і шукати компроміс між ними. І в багатьох випадках вийде так, що оптимізації місця тут не знайдеться. Дві точки зору – це прикладна програма з точки зору кінцевого користувача, і програмний код з точки зору розробника (-ів).

Кінцевого користувача цікавить програмний продукт, набір його функцій і можливостей, йому все одно чи виконується певна ділянка коду за 1 мс або за 10 мс, якщо він все одно не помітить різниці. Але погоня за вийгриш цих 9 мс може обійтися розробнику досить дорого. Питання – в чому сенс? Єдиний можливий – це в цілях самоосвіти, але не більше. Зрозумійте, що якість програми від цього не зросте ні на йоту, а може навіть і впаде.

Програмний код ж далеко не в останню чергу пишеться для людей. І вимоги до нього – відповідні. Він повинен бути зрозумілий, читаємо, гнучкий і розширюємо. Розробка майже ніколи не закінчується в момент випуску першої версії програми, і дуже важливо щоб удосконалення програмного продукту обходилася якомога дешевше. Оптимізація ж може принести шкоду якості коду з цієї точки зору (особливо низькорівнева оптимізація) – ми намагаємося зробити код більш оптимальним для машини, за рахунок зменшення його оптимальності для людини. Виграш від непотрібної оптимізації сумнівний, в той час як програш – Відчутний. Передчасному ОПТИМІЗАЦІЯ – ЗЛО! Не чешіть, поки не свербить. Але з іншого боку, зворотне – передчасна песимізація – теж зло. Шукайте серединку спираючись на позначені пріоритети.

Тому дуже важливо думаючи про оптимізацію правильно розставляти пріоритети. А пріоритети ці – це юзабіліті – для користувача, і чіткість, гнучкість, розширюваність коду – для розробника. Оптимізувати треба тоді і тільки тоді, коли підсумкові показники не влаштовують користувачів. І те, робити це потрібно – теж правильно. Не варто відразу ж кидатися переписувати ділянки коду на асемблері – це нерозумно. У першу чергу потрібно виявити вузьке місце шляхом тестування і вимірів. Робити це потрібно обов’язково, навіть якщо вам здається що ви знаєте чому ваша програма гальмує. Повірте досвіду, досить часто ваші здогадки не виправдовуються і причина криється десь ще. І тільки виявивши це вузьке місце, знайшовши причину, потрібно намагатися знайти більш оптимальний варіант, вирішальний ту ж задачу. У більшості випадків цей оптимальний варіант полягає в високорівневої оптимізації – потрібно змінити сам підхід до вирішення завдання. Я не є завзятим любителем алгоритмів і при оптимізації використовую скоріше не математичний, а інженерний підхід, про який розповім наступного разу.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Трекбек і пінги

трекбеків / пінгів ще немає.

Відгуки

Юзабіліті це важлива штука. Фактично одна з самих головних бо на це в першу чергу зветають увагу

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*