On Fri, 24 Sep 2021 21:29:36 +0300 Dmitry V. Levin wrote: > On Fri, Sep 24, 2021 at 08:04:59PM +0300, Andrey Savchenko wrote: > > On Fri, 24 Sep 2021 18:18:04 +0300 Dmitry V. Levin wrote: > > > On Fri, Sep 24, 2021 at 08:48:12AM +0300, Anton Farygin wrote: > > > > Да, Илья. > > > > > > > > Есть ещё вот такая статья годичной давности: > > > > https://johnysswlab.com/link-time-optimizations-new-way-to-do-compiler-optimizations/ > > > > > > > > и там интересная заметка про ffmpeg, в которой говорится о том, что > > > > выигрыш в сборке с LTO может быть нулевым. > > > > > > Особенно если в случае LTO ещё и выключить в пакете часть ассемблерных > > > оптимизаций. > > > > Если ты внимательно читал статью, то там и в тесте без LTO они > > оставались выключенными. А вообще, тот факт, что ради LTO > > приходится отключать сильные оптимизации > > Не надо ради LTO отключать сильные оптимизации. > Странно, что в ffmpeg так сделали. Пожалуйста, прочитай внимательно исходную ссылку. Не разработчики ffmpeg так сделали, а автор теста выключил asm, чтоб можно было сравнить ffmpeg с lto и без lto в чистом виде. А автор так сделал потому, что при включенном lto *некоторые* asm оптимизации ffmpeg выключаются и сравнение было бы некорректным, поскольку сравнивалась бы не разница с lto и без, а разница full asm w/o lto vs lto + partial asm. Детали можно посмотреть в ffmpeg configure — там всё просто и понятно. Так что цифры по ссылке — это чистая разница на коде с LTO и без, из которых видно, что эффект от LTO на качественно написанном коде очень слабый, а время на сборку удваивается, т.е. овчинка выделки не стоит. В моём понимании LTO наиболее эффективен там, где много неоптимального, грязного или вообще мёртвого кода. Что chromium хорошо подтверждает. > > и что за столько лет оно не научилось top level asm, > > Насколько я понимаю, и не научится - случаев мало, разработчикам не > интересно. Хорошо, что хоть __attribute__((__symver__)) добавили. Ну если ffmpeg — это редкий и неинтересный для разработчиков gcc случай, то вопросов больше не имею. Best regards, Andrew Savchenko