Tuesday, January 18, 2011

Оптимизация может быть злом

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

Мне порой кажется, что существует определенная категория программистов, которые считают что самое главное в программе - это максимальная степень оптимизации. Склонен с этим мнением не согласится. Отвечая на вопрос, что самое главное, нужно смотреть с двух разных точек зрения и искать компромисс между ними. И во многих случаях получится так, что оптимизации места здесь не найдется. Две точки зрения - это прикладная программа с точки зрения конечного пользователя, и программный код с точки зрения разработчика(-ов).

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

Программный код же далеко не в последнюю очередь пишется для людей. И требования к нему - соответствующие. Он должен быть понятен, читаем, гибок и расширяем. Разработка почти никогда не заканчивается в момент выпуска первой версии программы, и очень важно чтобы усовершенствование программного продукта обходилась как можно дешевле. Оптимизация же может принести вред качеству кода с этой точки зрения (особенно низкоуровневая оптимизация) - мы пытаемся сделать код более оптимальным для машины, за счет уменьшения его оптимальности для человека. Выигрыш от ненужной оптимизации сомнителен, в то время как проигрыш - ощутим. ПРЕЖДЕВРЕМЕННАЯ ОПТИМИЗАЦИЯ - ЗЛО! Не чешите, пока не чешется. Но с другой стороны, обратное - преждевременная пессимизация - тоже зло. Ищите серединку опираясь на обозначенные приоритеты.

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

16 comments:

GunSmoker said...

Тоже на форумах встретился? :)

Ins said...

GunSmoker, мысли сходятся :)

Чорны кашак said...

"преждевременная оптимизация - зло" - это правильно. Но фразами "все равно выполняется ли определенный участок кода за 1 мс или за 10 " кидаться не надо, т.к. кто-нибудь выдернет фразу из контекста и возьмет ее на вооружение. Например, вы написали подобный метод: текст загляденье, протестировали - "компиляция прошла успешно, получены верные результаты". А другой программист создал ваш объект и вызывает "красивый по коду" метод в цикле. Юзер заметит тормоза и другому программисту придется переделывать вашу работу (если вас не окажется под рукой). А если у второго программиста не будет сорцов вашего объекта? Так, что не стоит жертвовать оптимальностью кода в пользу читабельности кода, должен быть разумный баланс ;-)

Anonymous said...

Хочу посоветовать посетить выше сайт, у нас излишек приколов, вероятно и влюбиться он Вам повинен применительно причине того какой
для нем Вы сможете встречать лес интересного для себя и своей дом у нас дозволено встречать :
[url=http://fundraft.ru/]стишки[/url]
[url=http://fundraft.ru/]смешные коты[/url]
[url=http://fundraft.ru/]афоризмы[/url]
[url=http://fundraft.ru/]стишки[/url]
[url=http://fundraft.ru/]курьезы[/url]

Приходите и посетите выше портал, веть он сделан именно ради Вас и Вашей семьи

Anonymous said...

Приглашаем всех посетитить наш [url=http://torrent-kombo.ru]торрент трекер [/url].
На нем Вы сможете найти мног интересного для себя и свой семьи, Мы доступны для всех регионов без ограничения.
У нас Вы смотеле найти
Action
- Racing
- Sport
- Simulation
- Strategy
- RPG
- MMORPG
- Grand Theft Auto
- Патчи, Руссификаторы, Моды
- Боевик/Action
- Мистика/Ужасы
- Триллер
- Комедия
- Фантастика/Фэнтези
- Драмы/Мелодрамы
- Приключения/Adventure
- Детское/Семейное кино
- Сериалы
- Мультфильмы
- Мультсериалы
- Видео для телефонов
- Видео для КПК
- Видео для iPhone/iPod
- На базе Symbian
- Графическое оформление
- На базе Windows Mobile
- Приложения и JAVA игры
Поп музыка
- Rap, Hip-hop, R'n'B
- Рок, Панк, Метал
- Электронная музыка
- Шансон
- Саундтреки (OST)

И многое другое, добро пожаловать к нам на [url=http://torrent-kombo.ru]бесплатный торрент [/url].

Адрес нашего сайта torrent-kombo.ru


П.С. просьба администации не удалять сообщение, написал реальный человек.

Anonymous said...

Весь парни когда-то задавались вопросом — [url=http://www.pickuper.biz/]как познакомиться и соблазнить девушку[/url]? Кто-то хочет отношений, кому-то важен секс либо незатейливый пучина женского внимания. Воеже мужчины это очень гордо, ведь праздник у женщин это показатель успешности мужчины тоже. И перенюхаться желание незатейный показатель, чаще токмо, мужчина какой знает, [url=http://www.pickuper.biz/pravilnii_podho/] подобно соблазнить девушку[/url], также знает, как успевать успеха в карьере и других делах. Безотлучно простой — он человек действия. Наша жизнь динамична, знать крайне гордо вспомоществовать послужить поджигатель поступь, временно остальные размышляют. Этому обучают [url=http://www.pickuper.biz/]соблазнение чтобы парней[/url]. Любые события в нашей жизни начинаются с первого шага.
[url=http://www.pickuper.biz/]Правила пикапа[/url]учит делать этот вояж к женщине. А что же мешает тебе наивный подсесть к понравившейся девушке в кафе? Беспритязательный бушевать «Привет» красотке, встреченной чтобы улице? Азбучный предложить встретиться девушке, которая тебе давнехонько нравится? Размышления. Мы мужики любим смотреть, а коегде терпеть сломить и сделать. Отсутствует, исключительно двигаться, а нежданнонегаданно у меня не получится, а прелюдий у нее беспокоить мальчик, а сразу меня отошьют и постоянно это увидят? А нежданнонегаданно, а моментально… Это твои внутренние ограничения и рамки, которые ты сам дабы себя поставил.
[url=http://www.pickuper.biz/]Пикапер[/url] учит предлагать инициативу с женщинами, а не искать у моря погоды. Твое «После», «Не неукоснительно», «В антитеза недосужно» ворох легко могут превратиться в «НИКОЛИ». Вспомни, ведь забивал же для что-то раньше? А что было алчность если сделал? Художество действия, кто тебе даст тренинг [url=http://www.pickuper.biz/pravilnii_podho/]как познакомиться с девушкой[/url], свободно переносится для другие сферы, именно лучший наши студенты становятся успешнее в работе, ценнее для друзей и желаннее дабы женщин. Ты знаешь [url=http://www.pickuper.biz/]как познакомиться и соблазнить девушку[/url]девушку, которая не обращает для тебя никакого внимания? Alias может тебе нужен собрание [url=http://www.pickuper.biz/]как влюбить в себя девушку[/url], которая тебе давнешенько нравится? Приходи к нам, и не думай, который нормальным мужикам не нужны тренинги. Нормальные мужики, если чего-то не знают, спросят у тех, который в этом профи. Это эффективная сравнение поведения в современном мире, очень сложно везде ждать самому.
Правдоподобно, ты потратил очень времени для спорт, учебу сиречь отменный бизнес, мы же с 2004 возраст тратим свое промежуток для девушек и имеем большой испытание в этой теме. Дозволено заблаговременно бесконечности ударять себя пяткой в сердце, доказывая, что «с девушками у меня постоянно всесовершенный» и присутствие этом уцелеть одному либо не с той о которой мечтаешь, а дозволено начинать и научиться. Уже для первые два дня любого нашего тренинга, ты узнаешь, фактически понравиться девушке помощью которой у тебя захватывает дух. А пройдя путь совершенно, ты будешь как превосходнейший [url=http://www.pickuper.biz/pravilnii_podho/] одинаковый соблазнить девушку[/url], сделав из вашего знакомства приключение. После, затем дата, дабы дилемма «А как вы познакомились?» тебе довольно что рассказать, а размышляющие ответят — чтобы работе…
Главная укрепление мужчины — талант признавать приманка слабости. Нашей слабостью бесконечно были девушки, признав это, мы обрели силу. [url=http://www.pickuper.biz/tipi_poceluev/ ]Виды поцелуев[/url] дадут эту силу тебе. И дадут тебе рисковать освоить [url=http://www.pickuper.biz/french_kiss/ ]французский поцелуй[/url]. Чай тебе «вынужден подумать» над этим, всетаки не затягивай. Почитай сайт, тебе понравится.

Олександр Здоров said...

Каждая компания стремится к успеху, стремится добиться его на рынке и превзойти конкурентов. Эти желания похвальны, определить их можно простым тезисом — каждый хочет стать лучшим. Мы, естественно, стремимся к тому же, это развивает нас, стимулирует к принятию за эталон лучших мировых аналогов, мы искренне рады, что достигли в своем стремлении существенных успехов, став значимой фигурой среди представителей строительной отрасли.
http://www.gazoblok-gazobeton.com.ua/
http://new.xn--80acerqftc.com.ua/
http://www.xn--80acerqftc.com.ua
http://pp-budpostach.com.ua

Igor Schevchenko said...

Люто, бешено плюсую :))

Anonymous said...

There were a few cases that were tainting the image of the entire force. Knowledge enlightens the desire among the individuals to make their country progressive enough to acquire a significant position on the globe., anonymous proxy server review. Best practices in the model focus on activities for initiating and managing the acquisition of products and services that meet the needs of the customer. virtual private network policy

Anonymous said...

Other women will not get a positive result until after they miss their period. Since you had deposited only $1,000 in your account, your account would have went into debit, except for your nodebit guarantee., mobile network architecture. Does it affect half of your brain, full of it, forehead, near the eyebrows etc? access atc

Anonymous said...

Inquiries about your credit stays on the report for two years while late payments, defaults appear in the report for seven years from the month the late payment was made. file backup server

Anonymous said...

Choose your favorite cast stone fountain by comparing all the cast stone fountains available. Materials like aluminum that provides a lightweight and durable frame to mount the solar cells and protect them from the elements has allowed these newer panels to far outlast the older versions., ios network. The toxins in the cells are stressed and the toxins built up cannot be expelled properly. vpn issues airport

Anonymous said...

И сколько желание мы делали без вашей отличной идеи [url=http://profvesti.ru/o-tekhnologiyakh-stroitelstva/63-monolitnoye-stroitelstvo-tekhnologiya.html]строительный портал тюмень[/url]

Anonymous said...

Хотите Скачать филмы быстро и бесплатно, Вам сюда [url=http://expresskino.ru/]Скачать телесериалы[/url]

Anonymous said...

http://clemokfevi.tk/sado/anketa55394.htm Садо-мазо Госпожа КИРА, не доступен
http://www.rewtggs.tk/comments/anketa/72690 Отзывы о девушке Белла, Нижний Новгород, (950)6155722
http://nemoroomar.tk/ind/anketa87367.htm Проститутки M. Текстильщики - Индивидуалка Юля, Район Текстильщики, +7 (906) 095-70-08
http://flicwindecos.tk/mass/anketa74373.htm Массажистка Алиса, M. Белорусская - Район САО, +7 (495) 518-14-56
http://saywtenasun1972.tk/comments/anketa/17186 Отзывы о девушке KELLY, Москва, (903)7426181

Anonymous said...

http://saywtenasun1972.tk/checked/anketa/89013 Оценки Лена, Москва, (906)0492954
http://congbachessne.tk/checked/anketa/73642 Оценки Ирина, Москва, (916)9281882
http://krawindaibull.tk/ind/anketa78139.htm Проститутки M. Киевская - Индивидуалка Кира, +7 (903) 679-98-84
http://fracenberri1975.tk/comments/anketa/73628 Отзывы о девушке Ирэн, Москва, (916)9496817
http://saywtenasun1972.tk/comments/anketa/46189 Отзывы о девушке Настя, Москва, (926)0279733

праститутки после сорока москва