Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];

Вниз

Что можно почитать про оптимизацию кода ?   Найти похожие ветки 

 
Kinder_   (2005-10-06 20:47) [0]

Например, в книге по VB6 от Microsoft Press есть раздел посвещенный оптимизации программы.
В нем приводятся примеры и советы. Какие книги посоветуете по Delphi на эту тему ?
Спасибо.


 
Sergey_Masloff   (2005-10-06 20:54) [1]

Для начала я бы посоветовал книгу МакКоннелла Code Complete (Совершенный код) в котором он совершенно справедливо (и на примерах) показывает почему оптимизацией не надо увлекаться. Краткие тезисы:
1) Эффект очень редко сопоставим с затрачиваемыми усилиями
2) Разработчики компиляторов уже сделали много того что делает ручную оптимизацию ненужной
3) Методики быстро устаривает - что вчера позволяло ускорить программу сегодня может привести к "тормозам" и тратить значительную часть своего времени на изучение техник оптимизации - напрасные затраты.

Когда будет опыт позволяющий понять - да, тут оптимизация нужна - тогда вы сами найдете что почитать. Честное слово.


 
Kinder_   (2005-10-06 21:21) [2]

В книге по VB, о которой я говорил выше, приведено много советов таких, как:
постоянные значения лучше и правильнее хранить в константах; результаты функций, которые
несколько раз вызываются в программе, лучше сразу запомнить в переменную... и т.д
Вот я о чем


 
Virgo_Style ©   (2005-10-06 21:31) [3]

Kinder_   (06.10.05 21:21) [2]

Скорее всего, большую часть приемов, описанных в этой книге (или любой другой) можно спокойно использовать где угодно, а не только в VB...


 
Sergey_Masloff   (2005-10-06 21:39) [4]

Kinder_   (06.10.05 21:21) [2]
А в книге про которую говорю я описано почему так можно не делать (потому что обычно это сделает компилятор совершенно без твоего участия).


 
Lamer@fools.ua ©   (2005-10-06 23:55) [5]

>> Sergey_Masloff

Есть веСЧи, которые компилятор не может соптимизировать. Например, обращение через много точек. Когда я вижу код вроде этого, у меня рука начинает нащупывать несуществующий пистолет (правда, это скорее из-за плохой читабельности в первую очередь):

for I := 0 to a.b.c.Items.Count - 1 do
begin
  a.b.c.Items[I].Caption := "bla-bla-bla";
  a.b.c.Items[I].Name := "abc" + IntToStr(I);
  a.b.c.Items[I].Value := I;
  for J := 0 to a.b.c.Items[I].SubItems.Count - 1 do
  begin
     a.b.c.Items[I].SubItems[J].Caption := "bla-bla-bla";
     a.b.c.Items[I].SubItems[J].Name := "xyz" + IntToStr(J);
  end;
end;


 
Sergey_Masloff   (2005-10-07 05:58) [6]

Lamer@fools.ua ©   (06.10.05 23:55) [5]
>правда, это скорее из-за плохой читабельности
Тут я спорить не стану. Переписать нужно но не из-за скорости в первую очередь.


 
Lamer@fools.ua ©   (2005-10-07 08:46) [7]

>>Sergey_Masloff   (07.10.05 05:58) [6]

>Тут я спорить не стану. Переписать нужно но не из-за скорости в первую очередь.

Если такой код написан в части приложения, которая критична ко времени исполнения, то и из-за скорости.

Кстати, автор топика не говорит, о какой оптимизации идёт речь :o)
Я их знаю как минимум две: optimize for speed и optimize for code size.


 
Calm ©   (2005-10-07 09:42) [8]


> Для начала я бы посоветовал книгу МакКоннелла Code Complete
> (Совершенный код) в котором он совершенно справедливо (и
> на примерах) показывает почему оптимизацией не надо увлекаться.
>

Хорошая книга.
Совершенно справедливо для люобй оптимизации.


 
NightLord ©   (2005-10-07 09:45) [9]

Поищи на этом сайте, есть хорошая статейка название и адрес не помню =(


 
Jeer ©   (2005-10-07 09:47) [10]

Agner Fog - еще один взгляд на оптимизацию


 
begin...end ©   (2005-10-07 09:47) [11]

> NightLord ©   (07.10.05 09:45) [9]

http://delphi.vline.ru/articles/optimization.html

Эта? Тогда -- читать НЕ НАДО.


 
TUser ©   (2005-10-07 10:29) [12]

1. Так называемая "оптимизация кода" приведет к выигрышу во времени/памяти процента на 2. Может быть на 10. И если программа требует для работы времени, сравнимого со временем существования, например Вселенной, - тогда думать надо не об оптимизиции кода, а об оптимизации алгоритма.
2. Помимо скорости и памяти, у кода можно оценить также удобочитаемость. И простоту поддержки и модификации. ИМХО, - оно важнее, убедитлся на своем горьком опыте.


 
Игорь Шевченко ©   (2005-10-07 11:45) [13]

Программы пишутся для людей, а не для компьютера.


 
Mystic ©   (2005-10-07 15:22) [14]

Маляр Шлемиэль подрядился красить пунктирные осевые линии на дорогах. В первый день он получил банку краски, поставил её на дорогу, и к концу дня покрасил 300 метров осевой линии. "Отлично!" сказал прораб, "быстро работаешь!" -- и заплатил ему копейку.

На следующий день Шлемиэль покрасил 150 метров. "Мда, это, конечно, не так здорово, как вчера, но приемлемо." -- сказал прораб и заплатил ему копейку.

На следующий день Шлемиэль покрасил 30 метров. "Всего лишь 30!" заорал прораб. "Это никуда не годится! В первый день было в десять раз больше! В чём дело?"

"Ничего не могу поделать," -- говорит Шлемиэль. "Каждый день я ухожу всё дальше и дальше от банки!"

(ц) из http://russian.joelonsoftware.com/Articles/BacktoBasics.html

Если совсем никак не оптимизировать, то никакой производительности не хватит :) С другой стороны если оптимизировать каждую инструкцию то возрастет сложность сопросождения кода.

Вообще, лучшая оптимизация на уровне используемых алгоритмов. Так что почитай про различные структуры данных :)


 
GrayFace ©   (2005-10-07 19:25) [15]

Sergey_Masloff   (06.10.05 21:39) [4]
А в книге про которую говорю я описано почему так можно не делать (потому что обычно это сделает компилятор совершенно без твоего участия).

Компиллятор никогда не запомнит результат многократно вызываемой функции.


 
Sergey_Masloff   (2005-10-07 20:02) [16]

GrayFace ©   (07.10.05 19:25) [15]
Никогда не говори никогда. Об этом тоже у МакКоннелла написано. Когда прочтешь вернемся к этому обсуждению.


 
Lamer@fools.ua ©   (2005-10-07 21:15) [17]

>>GrayFace ©   (07.10.05 19:25) [15]

Это смотря какая функция. Если детерминированная (я использую понятие Transact SQL), то, в принципе, можно (и имеет смысл) запомнить.


 
GrayFace ©   (2005-10-08 10:36) [18]

> Об этом тоже у МакКоннелла написано. Когда прочтешь вернемся
> к этому обсуждению.

Дайте ссылку, plz.


 
Sergey_Masloff   (2005-10-08 11:34) [19]

GrayFace ©   (08.10.05 10:36) [18]
>>Дайте ссылку, plz.
www.books.ru
Ну или http://cc2e.com


 
Kinder_   (2005-10-08 12:26) [20]

>GrayFace ©   (08.10.05 10:36) [18]

http://dfni.dp.ua/books/load.php?ty=prg&PHPSESSID=51977a396db36cc6bef0d1ee4aa2119a



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.049 c
1-1127581102
Sysanin
2005-09-24 20:58
2005.10.30
Нажатие несколький кнопок


1-1128811063
none
2005-10-09 02:37
2005.10.30
ZoneAlarm


1-1128196844
bva
2005-10-02 00:00
2005.10.30
Создание таблицы в Excel


5-1093549702
Jetus
2004-08-26 23:48
2005.10.30
Выделение дней в календаре


3-1127359637
V-A-V
2005-09-22 07:27
2005.10.30
Пароль на MDB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский