Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Оптимизация: ваш злейший враг  (Прочитано 30172 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« : 13-12-2010 23:04 » 

Обсуждение статьи: «Оптимизация: ваш злейший враг»
« Последнее редактирование: 27-10-2011 11:03 от Dale » Записан

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

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 16-12-2010 13:45 » 

Да, я недавно обнаружил у себя в одной программе функцию, на которую приходилось 50% времени. И ещё одну, на которую приходилось 25%. Первая вызывала new для мелкого объекта, а вторая вызывала delete

Переход на STL контейнеры здорово помог.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 16-12-2010 17:40 » 

Полезная статья. Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 16-12-2010 17:51 » 

Полезная статья. Улыбаюсь

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

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

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 17-12-2010 09:38 » 

Думаю, что стоит объяснить, что за "Ц" - сходу не сразу понятно.
Не понятно преобразование C*n2 -> O(n2).

Сделал врезку с пояснением от себя. Получилось вроде многовато, но не должно остаться неясностей. Как читается, не перемудрил?
Записан

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

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 17-12-2010 09:56 » 

Можно ещё добавить до кучи Дональда Кнута: "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil"
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #6 : 20-12-2010 04:15 » 

хорошая статья, мне понравилось
давно и полностью поддерживаю автора
нефиг оптимизировать, пока нет проблемы, за исключением редких случаев Улыбаюсь
Записан

Странно всё это....
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 20-12-2010 07:05 » 

нефиг оптимизировать, пока нет проблемы

Да и даже когда есть проблема, все равно нефиг оптимизировать что попало, не промерив сначала все досконально. Но это ж думать надо...
Записан

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

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #8 : 20-12-2010 09:42 » 

нефиг оптимизировать, пока нет проблемы

Да и даже когда есть проблема, все равно нефиг оптимизировать что попало, не промерив сначала все досконально. Но это ж думать надо...

что бы что-то улучшить, надо это что-то измерить Улыбаюсь
Записан

Странно всё это....
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 20-12-2010 09:50 » 

что бы что-то улучшить, надо это что-то измерить Улыбаюсь

Для умных людей это очевидно Улыбаюсь

Глупые предпочитают разглагольствовать о преимуществах ассемблеров перед ЯВУ, нативного кода перед управляемым и т.д. Оно как-то проще, чем мерить...
Записан

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

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Oleg
Интересующийся

ru
Offline Offline

« Ответ #10 : 31-05-2011 08:13 » 

Отличная статья. На курсах фирмы 1С, которые я посещал, нам говорили те же самые слова про оптимизацию...
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 31-05-2011 15:20 » 

Цитата: Oleg
На курсах фирмы 1С, которые я посещал, нам говорили те же самые слова про оптимизацию...
Боюсь, что в этой среде, как у разных php-шников, толики оптимизации как раз не помешает. Но, разумеется, не преждевременной.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #12 : 31-05-2011 15:34 » new

о, я тоже вдруг добрался почитать Улыбаюсь

Непонятный: момент (причём с переводом всё верно - в оригинале я глянул, тоже не понял)

Цитата
Это не помешало Microsoft полностью разрушить объектную модель C++, построенную на хэндлерах сообщений; когда вы вызываете CWnd::OnWhatever(...), вместо действительного вызова DefWindowProc с переданными вами параметрами они повторно используют параметры последнего сообщения для вызова ::DefWindowProc.

Так я и не понял, что тут имел в виду автор. Почему вдруг обработчик события (вернее - сообщения windows) вдруг вызывается НАМИ ? Он же вызывается каркасом из оконной процедуры. Параметры какие передались, такие и будут переданы далее через стек - в общем, что-то тут напутано ))

Добавлено через 1 минуту и 20 секунд:
хотя, может быть, какая-то тонкость в переводе тут
« Последнее редактирование: 31-05-2011 15:35 от Алексей1153 » Записан

Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 31-05-2011 21:46 » 

Запутанный пример с MFC, наверное, вообще не стоило приводить, и без него принцип вполне понятен: оптимизировать GUI, где все определяется реакцией пользователя, - самое бесполезное занятие.
Записан

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

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 01-06-2011 07:20 » 

Иногда требуется - когда это GUI тормозит.
А вообще, считаю, что в GUI главное - однотипность поведения форм. Чтобы пользователя достаточно было один раз научить.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Oleg
Интересующийся

ru
Offline Offline

« Ответ #15 : 01-06-2011 18:51 » 

Цитата: Oleg
На курсах фирмы 1С, которые я посещал, нам говорили те же самые слова про оптимизацию...
Боюсь, что в этой среде, как у разных php-шников, толики оптимизации как раз не помешает. Но, разумеется, не преждевременной.
У 1С есть готовые методики программирования, заточенные под оптимизацию Улыбаюсь

Но "биться" за 5% производительности не имеет смысла, если пользователь ждёт выполнения отчёта 1-2 секунды.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 01-06-2011 21:59 » 

По моему опыту, внедряемая оптимизация должна изменять двоичными порядками. Хотя бы на 50% - иначе достигнутое не оправдывает последующую ловлю глюков. Т.е., при тормозах в софте эксперименты по оптимизации все равно проводишь, но внедрение результата — только по показателям. Опять же по своему опыту, со своей спецификой: основные тормоза за БД, реже - за GUI (например, не рассчитано длинные списки (особо VB это не любит) или большие объемы данных RPC), вычисления же в оптимизации нуждаются редко. Может у кого другая специфика и другая статистика.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines