Есть ли у кого-нибудь опыт работы с gcc LTO (С++)?
Мой главный интерес - перемещение кода из файлов заголовков в исходные файлы (для развязки), но сохранение одинаковой производительности для встроенных файлов.
Я не уверен, с чего начать, может кто-нибудь объяснить, что делать?
Ответ 1
Я провел некоторое тестирование на Firefox и LTO, показывая использование памяти, время компиляции и время автономной работы
В моем блоге также сравнивается с LLVM. LTO быстро развивается, GCC 4.9 значительно отличается от предыдущих выпусков. Не всегда очевидно, как заставить его работать правильно для данного приложения, в тексте описываются основные проблемы, с которыми вы можете столкнуться (отсутствие плагина-линкера, использование толстых файлов LTO и отбрасывание части LTO по ссылке и т.д.)
Ответ 2
Мы провели очень ограниченные эксперименты. В нашем случае производительность растет там, где это довольно неприятно, но поскольку мы уже позаботились о хорошем вложении, это не удивительно.
Однако включение LTO привело к значительному увеличению потребления памяти GCC, что в основном делает невозможным параллельную компиляцию на наших 4-процессорных машинах с четырьмя процессорами /4 ГБ, поэтому мы приостанавливаем эксперимент и ожидаем, что будущие версии попытаются снова.