Size: a a a

pro.graphon (and gamedev)

2020 December 17

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Alexander Potapov
> во время линковки
> у меня код линкуется больше минуты из-за LTO, не надо, и так больно
ну так ты понимаешь же, наверное, что для любого языка будет так же? Или всё уползёт в оверхед в рантайм?
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
UsernameAK
это как раз про компиляцию шаблонов один раз
то есть предлагаешь вручной инстанцировать темплейты для всех нужных типов в отдельном файле, по сути теряя то удобство автоматического инстанцирования, которое они дают?
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Я вижу два варианта: 1. во время линковки нужно 300ГБ памяти и несколько часов. 2. Разбиваем всё на TU, но что-то будет дублироваться.
источник

U

UsernameAK in pro.graphon (and gamedev)
Alexander Potapov
то есть предлагаешь вручной инстанцировать темплейты для всех нужных типов в отдельном файле, по сути теряя то удобство автоматического инстанцирования, которое они дают?
я о том, что стандарт такое предусматривает
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
это не должен делать разработчик
источник

U

UsernameAK in pro.graphon (and gamedev)
его вроде даже когда-то поддерживал GCC
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
но у нас компиляторы устроены так что они дробят сборку на TU и каждый из них билдят независимо
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
в итоге эта штука не работает
источник

U

UsernameAK in pro.graphon (and gamedev)
есть в стандарте != есть на самом деле, иными словами
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Anatoly Tomilov
ну так ты понимаешь же, наверное, что для любого языка будет так же? Или всё уползёт в оверхед в рантайм?
вот для этого нам и нужен JIT!
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
приплел
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
ну инстанцировали их мы в рантайме при запуске. Ну подвисла где-то в начале наша игрулька. Да и хуй с ним если честно
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
если что сделать механизм для явного описания того что должно одназначно уйти в компайл тайм
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Если код твой и у тебя extern template на шаблоны классов в этом же коде, то это значит что можно переписать без шаблонов (но организовав несколько сборок для разных комбинаций актуальных параметров шаблонов). Ни там ни там выигрыша по времени компиляции не будет.
источник

U

UsernameAK in pro.graphon (and gamedev)
Alexander Potapov
вот для этого нам и нужен JIT!
а бывает JIT у LLVM кстати?
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
напоминаю что нам нужно минимизировать
1) время разработки человеком
2) время сборки (компиляция и линковка)
3) время работы
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
UsernameAK
а бывает JIT у LLVM кстати?
clang jit видел, чет умеет
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Alexander Potapov
напоминаю что нам нужно минимизировать
1) время разработки человеком
2) время сборки (компиляция и линковка)
3) время работы
то есть переписать руками это конечно работает но бьет по пункту 1
источник

U

UsernameAK in pro.graphon (and gamedev)
ну судя по тому что она llvm, он там по идее должен быть
источник

U

UsernameAK in pro.graphon (and gamedev)
Alexander Potapov
напоминаю что нам нужно минимизировать
1) время разработки человеком
2) время сборки (компиляция и линковка)
3) время работы
выбери два
источник