Конференция "Embarcadero"

Обсуждение вопросов, связанных с компанией Embarcadero, ее продуктами RAD Studio, C++Builder, Delphi и другими.

 
 
Добавить сообщение »

Тема: Обсуждение материала "Написание оптимального кода под Delphi"

В данной статье рассмотрены принципы, помогающие компилятору Delphi генерировать более оптимальный с точки зрения скорости код. Если Вы не хотите вникать в подробности, в конце статьи есть "свод правил", которые рекомендуется соблюдать при написании программ.

Автор:  schmuck Дата: 12.05.2019 14:05
Delphi выполняет все почти именно так, как должен. Это как раз переизбыток "оптимизации" в последних версияъ иногда приводит к непредсказуемым трудноотлавливаемым ошибкам. В идеале (для меня, по крайней мере) оптимизатор должен оптимизировать код с учетом аппаратной платформы. Не более, не менее. Исправлять синтаксис он не должен. Для этого есть программист.

Delphi не оптимизирует не изменяемые переменные... Так, если вы знаете, что переменная неизменяемая, какого лешего тогда он не объявлен костантой? Раз программер это сделал, значит так было нужно (или ошибся). Но исправлять чужие ошибки, или додумывать, что там было нужно программисту компилятор не должен. Если у человека плохой стиль программирования, компилятор тут не поможет. И не должен.
В теории, после сборки всех файлов Delphi должен знать, будет использоваться (меняться) та или иная переменная или нет. Но это в теории... С учетом разрастания кода времени выполнения, который от версии к версии все популярнее, знать это наверняка - нельзя.

Арифметические "хаки", пришедшие к нам от ассемблерщиков и микрокристалльщиков всегда узкоспециализированные. Всегда. Держать таблицу всех возможных вариантов подстановок, с кучей различных функций и прочего - не лучшее решение. Кроме того, многие бит-хаки платформо- и аппаратнозависимые.

Постоянный подсчет some_object.count в цикле. Должен быть. Сколько допущено ошибок, связанных с тем, что та или иная коллекция меняет свой размер в цикле. Этот процесс - плохая практика программироваяния? По ситуации, но часто - да. За плохой стиль человека отвечает компилятор? Нет. Но, по крайней мере, компилятор пытается эти ошибки перехватить.

Основной минус оптимизатора Delphi в его неглубоком синтаксическом анализе, поэтому фишки, вроде ветвлений, вынесения циклокода и пр. - да, согласен, тут он проигрывает многим сторонним компиляторам. Хотя для меня, повторюсь, не критично.
Ответить на сообщение »
 

Добавить сообщение »
Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/iservices/messages.asp?forumId=18718&topicId=30