Главная страница проекта ИНФОРМАТИКА-21

Наука Школе

Сравнение эффективности программ на Компонентном Паскале и на C++

В  докладе были предъявлены результаты тестирования двух совершенно реалистических программ, реализующих достаточно сложный вычислительный алгоритм, созданный для применения в физике элементарных частиц. Алгоритм был разработан в Блэкбоксе на Компонентном Паскале (при разработке были приложены значительные усилия с целью сделать алгоритм предельно "чистым"), а потом наиболее прямолинейным способом перенесен на С++, чтобы сделать его доступным на разном "железе", используемом физиками-экспериментаторами.

На Компонентном Паскале программа состояла из 4 модулей общей длиной около тысячи строк без комментариев. Время переноса программы вручную составило меньше недели, примерно на порядок меньше времени разработки, в которой максимально использовался механизм автоматического сбора мусора, без чего найти алгоритм было бы, скорее всего, невозможно.

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

Программы выполнялись на Pentium 4/2 GHz, память Rambus 400MHz (машина предоставлена российским отделением Интел).

Результаты таковы:

Другими словами, программа в Блэкбоксе — со всей отладочной информацией, граничными проверками индексов массивов и т.п., оказалась столь же эффективной (в пределах ошибок измерений), что и максимально оптимизированный по скорости выполнения вариант на C++. Отладочный вариант на С++ — в два с половиной раза медленнее, чем оптимизированный.

Глядя на результаты, можно утверждать, что главная цель оптимизации в компиляторах C++ — скомпенсировать крайнюю неэффективность кода, имеющую место из-за неадекватного дизайна самого языка программирования.

Отметим, что программа на С++ не использовала множественного наследования, которое могло бы привести к дальнейшим накладным расходам во время выполнения и затруднить оптимизацию.

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

Главная страница проекта ИНФОРМАТИКА-21

Наука Школе