07 марта 2021

Улучшение производительности компилятора Delphi 10.4.2

    Одним из основных улучшений RAD Studio 10.4.2 Sydney является значительное увеличение скорости работы компилятора Delphi. Согласно официальному анонсу, разработчики реализовали более 35 различных оптимизаций компилятора. На вебинаре "What's Coming in Delphi, C++Builder and RAD Studio 10.4.2 Sydney" был заявлен рост скорости в 90 процентов.
Delphi 10.4.2 compiler improvements
На сколько же реально выросла скорость работы компилятора в Delphi 10.4.2?
    Если судить по уже опубликованным материалам, рост скорости компиляции для 32-битного компилятора Delphi составил примерно 40 процентов. Например:     Мой тестовый пример – это консольная программа, которая создает классы из нескольких библиотек с большим количеством кода. При ее компиляции компилятор насчитал почти два миллиона строк. Я выбрал библиотеки так, чтобы у них были разные авторы и задачи, на решение которых они рассчитаны, были из разных предметных областей. Поэтому, мой тест скорости работы компилятора использует очень разный по сложности и стилю написания исходный код.

Delphi 10.3.3 Win32
Delphi 10.3.3 Win32
Delphi 10.3.3 Win64
Delphi 10.3.3 Win64
Delphi 10.4.1 Win32
Delphi 10.4.1 Win32
Delphi 10.4.1 Win64
Delphi 10.4.1 Win64
Delphi 10.4.2 Win32
Delphi 10.4.2 Win32
Delphi 10.4.2 Win64
Delphi 10.4.2 Win64
Мы видим падение скорости компиляции примерно на 4% при переходе с Delphi 10.3.3 на 10.4.1, и ее рост на 37.92% для 32-битной версии и на 24.48% для 64-битной версии при переходе с Delphi 10.4.1 на 10.4.2:
    10.3.3 10.4.1 10.4.2
Время Время Сравнение
с 10.3.3
Время Сравнение
с 10.3.3
Сравнение
с 10.4.1
Win32 20.3с 21.1с 3.94% 13.1с -35.47% -37.92%
Win64 32.1с 33.5с 4.36% 25.3с -21,18% -24,48%
Это конечно не заявленные 90 процентов, но рост скорости компиляции на 25-40 процентов впечатляет и не может не радовать.
    Улучшение производительности компилятора Delphi 10.4.2 была достигнута за счет использования исходного кода IDE Fix Pack. IDE Fix Pack – это набор неофициальных исправлений ошибок и оптимизаций производительности для IDE RAD Studio, компилятора Win32/Win64/Andoird-ARM и отладчика Win32. Его автор, Andreas Hausladen, уже 15-20 лет работает над улучшением Delphi и C++Builder. Например, его модуль ControlsAtomFix исправлял в Delphi 6-XE ошибку QC 90511 (утечка ресурсов, вызванная сообщением RM_GetObjectInstance), которая была исправлена разработчиками Delphi только в версии XE2. Andreas Hausladen является автором более десятка экспертов и модулей: DDevExtensions, DFMCheck, DelphiSpeedUp, DLangExtensions, AsyncCalls... Я использовал его DelphiSpeedUp и RtlVclOptimize еще при работе с Borland Delphi 7. Возникает вопрос, почему разработчики Delphi обратили внимание на IDE Fix Pack только сейчас?

Продолжение: "Состязание компиляторов: Delphi 10.4.2 против Delphi 10.3.3 под допингом".

4 комментария:

  1. Тоже давно задавался этим вопросом, почему не включают в код его наработки

    ОтветитьУдалить
  2. Анонимный07 марта, 2021 21:44

    Чтобы сделать человеку хорошо, сделай ему вначале плохо, а потом верни, как было. Я не понимаю всеобщей радости по этому поводу. От версии к версии разработчики Delphi уменьшали скорость компиляции, теперь увеличили. Все "Ура!!! Спасибо товарищу Сталину за наше счастливое детство..."

    ОтветитьУдалить
  3. Анонимный08 марта, 2021 09:09

    Я так понимаю, те, кто использовал IDE Fix Pack (большинство?), разницы в скорости вообще не ощутят? Да уж, достижение века!

    ОтветитьУдалить
  4. Лучше бы они озаботились качеством конечного компилируемого кода.
    Delphi это найтив. А почти единственный плюс от возни с найтивом в наше время - это максимально-возможная оптимизация и скорость работы конечного кода.
    И если Си/С++ в этом по прежнему вне конкуренции, то Дельфи уже десятилетие как позорно не может оторваться в этом вопросе даже от таких менеджед сред как .NET и Java.
    Я сам проводил не сложные алгоритмические тесты SkiMark и сам недоумевал.
    Кому будет охота возиться с дельфевым найтивом и ручным менеджментом памяти в новых проектах, если при этом преимущества перед куда более удобным во всех отношениях .Net-ом уже практически нет?

    ОтветитьУдалить