[devel] I: gcc 11.2.1 && binutils 2.37

Andrey Savchenko bircoph на altlinux.org
Пт Сен 24 22:48:06 MSK 2021


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
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 833 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20210924/b90cca7b/attachment-0001.bin>


Подробная информация о списке рассылки Devel