TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: wl. Россия  
Дата: 10.06.25 19:50
Оценка: 3 (3) :)
https://www.securitylab.ru/news/560030.php

Что вы об этом думаете?
мне эта тема интересна, н пока что непонятно, как это применить в своих проектах.
Если бы сборка отладочной версии достаточно большого проекта пролетала со свистом, было бы хорошо
Re: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: Великий Мессия google
Дата: 10.06.25 20:08
Оценка:
никак
все эти улучшения войшли и войдут в базу clang
так что юзайте последний clang
и ждите когда вся кодо база в него войдет
а для ускорения переходите на модули или используйте pch
Re: TPDE: Немецкие студенты просто взяли и ускорили компиляц
От: swame  
Дата: 11.06.25 06:04
Оценка: +1
Здравствуйте, wl., Вы писали:

wl.>https://www.securitylab.ru/news/560030.php


wl.>Что вы об этом думаете?

wl.>мне эта тема интересна, н пока что непонятно, как это применить в своих проектах.
wl.>Если бы сборка отладочной версии достаточно большого проекта пролетала со свистом, было бы хорошо

Так и работаю в Delphi.
Компиляция проекта на родном компиляторе под Win32 (но уже с оптимизацией)
ровно на порядок быстрее компиляции его же под Linux через LLVM.
Отредактировано 11.06.2025 19:09 swame . Предыдущая версия .
Re: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 11.06.25 06:34
Оценка: +1
Здравствуйте, wl., Вы писали:

wl.>https://www.securitylab.ru/news/560030.php


wl.>Что вы об этом думаете?


>> по сравнению с LLVM Clang на базовом уровне оптимизации -O0.


Что такое нулевой уровень у Clang, можно показать на простейшем примере:
int foo(int a, int b) {
  int x = a + b;
  return x;
}


Результат (в 32-битке):

        pushl   %ebp
        movl    %esp, %ebp
        pushl   %eax            ; <-- вообще не нужно
        movl    12(%ebp), %eax  ; <-- немедленно перекрывается следующей командой
        movl    8(%ebp), %eax   ; <-- немедленно перекрывается следующей командой
        movl    8(%ebp), %eax
        addl    12(%ebp), %eax
        movl    %eax, -4(%ebp)  ; <-- сохраняем чтобы сразу же прочитать обратно
        movl    -4(%ebp), %eax
        addl    $4, %esp        ; <-- следствие лишнего push eax
        popl    %ebp
        ret


Для уровней 1 и 2 есть бенчмарки? Хорошо, если процентов на 10 ускорят.

wl.>мне эта тема интересна, н пока что непонятно, как это применить в своих проектах.

wl.>Если бы сборка отладочной версии достаточно большого проекта пролетала со свистом, было бы хорошо

Были случаи, что "достаточно большой проект" при -O0 начинал занимать столько места и настолько тормозить, что отлаживать это было невозможно.
А уже -O1 у него настолько оптимизирует, что отлаживать сложно с другой стороны, слишком много переделок.

Итого IMO не туда усилия направляют.

Что я хотел бы видеть, это нормальный -Og с запретом передвижения кода между строками исходного текста и между вызовами функций из этой строки, но с оптимизацией внутри одной строки.
The God is real, unless declared integer.
Re[2]: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: rudzuk  
Дата: 11.06.25 07:46
Оценка:
Здравствуйте, swame, Вы писали:

s> ровно на порядок быстрее компиляции его же под Linux через LLVM.


Это пока они оптимизацию в LLVM не включили
avalon/3.0.2
Re[2]: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.06.25 08:29
Оценка:
Здравствуйте, netch80, Вы писали:

N>Результат (в 32-битке):


N>
N>        pushl   %ebp
N>        movl    %esp, %ebp
N>        pushl   %eax            ; <-- вообще не нужно
N>        movl    12(%ebp), %eax  ; <-- немедленно перекрывается следующей командой
N>        movl    8(%ebp), %eax   ; <-- немедленно перекрывается следующей командой
N>        movl    8(%ebp), %eax
N>        addl    12(%ebp), %eax
N>        movl    %eax, -4(%ebp)  ; <-- сохраняем чтобы сразу же прочитать обратно
N>        movl    -4(%ebp), %eax
N>        addl    $4, %esp        ; <-- следствие лишнего push eax
N>        popl    %ebp
N>        ret
N>

У TPDE свой бэкенд, поэтому возможно код будет лучше.
N>Для уровней 1 и 2 есть бенчмарки? Хорошо, если процентов на 10 ускорят.
Вопрос непонятен. Бенчмарки по ускорению уровней 1 и 2 при помощи TPDE? Нет, он вообще не умеет никаких 1 и 2. Это специальный бэкенд, заточенный на максимальную скорость компиляции, а не на оптимизацию кода.
wl.>>мне эта тема интересна, н пока что непонятно, как это применить в своих проектах.

N>Были случаи, что "достаточно большой проект" при -O0 начинал занимать столько места и настолько тормозить, что отлаживать это было невозможно.

Ну, наверное можно скомпилировать TPDE только "достаточно маленький" кусочек "достаточно большого" проекта, и сосредоточить отладку именно на нём.
N>Итого IMO не туда усилия направляют.
N>Что я хотел бы видеть, это нормальный -Og с запретом передвижения кода между строками исходного текста и между вызовами функций из этой строки, но с оптимизацией внутри одной строки.
Звучит как тема ещё одной кандидатской
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: graniar  
Дата: 15.06.25 00:32
Оценка:
Здравствуйте, wl., Вы писали:

wl.>Если бы сборка отладочной версии достаточно большого проекта пролетала со свистом, было бы хорошо


Может скажу наивность, но в большинстве случаев нет необходимости пересобирать весь проект.
Хотя если старый проект с замороченным легаси и не дают провести рефакторинг, тогда приходится терпеть.
Re[2]: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 15.06.25 00:42
Оценка:
Здравствуйте, graniar, Вы писали:

wl.>>Если бы сборка отладочной версии достаточно большого проекта пролетала со свистом, было бы хорошо


G>Может скажу наивность, но в большинстве случаев нет необходимости пересобирать весь проект.

G>Хотя если старый проект с замороченным легаси и не дают провести рефакторинг, тогда приходится терпеть.

Множество либ хидер онли, иногда cpp-шник — единственный файл проекта
Маньяк Робокряк колесит по городу
Re[3]: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: graniar  
Дата: 15.06.25 01:07
Оценка:
Здравствуйте, Marty, Вы писали:

M>Множество либ хидер онли, иногда cpp-шник — единственный файл проекта


А ну если большие любители шаблонов — сами себе злобные буратины.
Прирост производительности незаметен, зато куча гемора и таскать эти параметры повсюду за собой.
Re[4]: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 15.06.25 01:11
Оценка:
Здравствуйте, graniar, Вы писали:

M>>Множество либ хидер онли, иногда cpp-шник — единственный файл проекта


G>А ну если большие любители шаблонов — сами себе злобные буратины.

G>Прирост производительности незаметен, зато куча гемора и таскать эти параметры повсюду за собой.

При использовании шаблонов очень заметен прирост производительности программиста
Маньяк Робокряк колесит по городу
Re[5]: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: graniar  
Дата: 15.06.25 01:32
Оценка: +1
Здравствуйте, Marty, Вы писали:

M>При использовании шаблонов очень заметен прирост производительности программиста


А у меня противоположный опыт, шаблоны слишком заморачивают архитектуру и затрудняют эволюцию проекта.
Re[6]: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 15.06.25 01:33
Оценка:
Здравствуйте, graniar, Вы писали:

M>>При использовании шаблонов очень заметен прирост производительности программиста


G>А у меня противоположный опыт, шаблоны слишком заморачивают архитектуру и затрудняют эволюцию проекта.



Сдуру можно и член сломать
Маньяк Робокряк колесит по городу
Re[3]: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: wl. Россия  
Дата: 15.06.25 07:47
Оценка: :)
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, graniar, Вы писали:


wl.>>>Если бы сборка отладочной версии достаточно большого проекта пролетала со свистом, было бы хорошо


G>>Может скажу наивность, но в большинстве случаев нет необходимости пересобирать весь проект.

G>>Хотя если старый проект с замороченным легаси и не дают провести рефакторинг, тогда приходится терпеть.

M>Множество либ хидер онли, иногда cpp-шник — единственный файл проекта


конкретно с Qt так не получается, чуть шевельнешь хидер, и чуть не полпроекта пересобирается, с moc-файлами, хз почему так
Re[2]: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: Skorodum Россия  
Дата: 14.07.25 08:28
Оценка:
Здравствуйте, graniar, Вы писали:

G>Может скажу наивность, но в большинстве случаев нет необходимости пересобирать весь проект.

Как сказать, что вы не используете CI не говоря этого... Так что да, наивность.
Re[4]: TPDE: Немецкие студенты просто взяли и ускорили компиляцию в 20 раз
От: Skorodum Россия  
Дата: 14.07.25 08:30
Оценка:
Здравствуйте, wl., Вы писали:

wl.>конкретно с Qt так не получается, чуть шевельнешь хидер, и чуть не полпроекта пересобирается, с moc-файлами, хз почему так

Forward declaration не используете?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.