2006-08-23

Ленивая оптимизация программ на Delphi/BCB

Обычно говоря про оптимизацию, мы подразумеваем бессонные ночи в обнимку с профайлером, поиск более эффективных алгоритмов и изучение сгенерированного кода в дизассемблере.
На этом фоне выделяются два замечательных проекта, которые позволяют ускорить работу программы, просто добавив пару модулей в uses dpr файла.

1) альтернативный менеджер памяти FastMM
http://fastmm.sf.net/
последняя версия 4.70
настолько хорош, что Borland заменила им стандартный менеджер в BDS2006.
В составе идет замена borlndmm.dll (Shared Memory Manager) позволяющая заметно ускорить работу самой IDE.

2) проект FastCode, FastMove.
http://www.fastcodeproject.org/
http://fastcode.sourceforge.net/
Я использовал только FastMove, но качать придется и FastCode, т.к. FastMove использует один небольшой модуль из него.
Замена стандартных функций Delphi (таких как move) на ускоренные аналоги (MMX, etc) с патчем в runtime.

Т.е. в обоих случаях в своих исходниках ничего менять не нужно, кроме как добавить
Uses FastMove, FastMM4 в начале dpr файла.

Вчера, наконец, дошли руки – написал тестовую программу, работающую с сокетами (отправляющую и принимающую бинарные пакеты). Ускорение работы с FastMove+FastMM4 практически двукратное, совершенно на ровном месте (я особо не выделяю память и не использую move)!

Будет интересно увидеть ваши результаты на таких же бытовых программах!