Что-бы сделать оптимальный код по критерию ресурса времени и памяти,
используйте профилировщики. Вашему вниманию предоставляется
AQTimeПоследнюю триал версию продукта можно скачать по ссылке http://automatedqa.com
"Хорошую" версию с ключом (была доступна версия 5.40), но не последнюю здесь: http://www.pnasoft.com/archive/tags/AutomatedQA/default.aspx
или скачать здесь
ProDelphiНемецкий продукт, в триал версии имеются ограничения.
www.prodelphi.de
Delphi ProfilerСамый простой и старый вариант профилировщика. Для работы необходим FrogBit.
Полезно так же почитать книгу Джулиана Банкелла "Фундаментальные алгоритмы и структуры данных", которую можно купить или скачать электронную версию в интернете.
А вот 9 полезных советов из одной статьи ("Компьютерра") по этому вопросу:
Девять полезных советов
1 При написании кода программ старайтесь
избегать процедур, состоящих из сотен строк. Практически всегда в них
можно выделить блоки, которые лучше оформить в виде отдельной
процедуры. Возможно, позже вы ею даже воспользуетесь где-то в другом
месте. Не говоря уже о том, что это повышает понимание программы и
вами, и другими программистами. К тому же так проще искать «узкие»
места в вашей программе. 2 Пользуйтесь оператором case вместо
многократных if… else if… Во втором варианте компилятор будет выполнять
проверку условия столько раз, сколько у вас вариантов. В первом
проверка выполняется лишь однажды. 3 Некоторые действия могут быть
довольно продолжительными, поэтому выносите за рамки цикла все, что
можно выполнить вне его, чтобы избежать большого числа повторений
внутри цикла. 4 В циклах типа for нужно стараться, чтобы значение
счетчика уменьшалось до нуля, а не наоборот — начиналось с нуля. Это
связано с особенностями процессора. Сравнение с нулем выполняется
гораздо быстрее, чем с другим числом. 5 Старайтесь пользоваться
типом Variant только при необходимости. Операции над этим типом
сложнее, чем, например, над Integer или String. 6 Не используйте
компонент TTreeView для хранения древовидных структур данных — он
работает очень медленно и предназначен только для отображения. Когда я
заменил этот компонент самодельным деревом на основе TList, программа стала работать быстрее примерно в сто раз. 7 Не
пытайтесь приспособить RichEdit для подсветки синтаксиса. Он для этого
не предназначен и работает в данном случае очень медленно. 8 Сохранение
и загрузка свойств компонентов с помощью методов ReadComponent и
WriteComponent работает довольно медленно, поэтому по возможности
старайтесь сохранять и восстанавливать состояние программы между
сеансами при помощи других способов. 9 Если вы заранее знаете, что в
списке для поиска будет много элементов, постарайтесь отсортировать его
и применять бинарный поиск вместо линейного.
|