beldmit: (Программизм)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2019-02-06 08:29 pm

Компиляторное внезапное

Скачал триал-версию компилятора от Intel. В своё время на криптокомовском коде он давал прирост производительности раза в два (без учёта асемблерных вставок, которые шансы выравнивали). Одновременно скачал компилятор от AMD и устроил недобенчмарк на том, что под руку попалось — машинка с AMD-шным процессором и машинка с Intel ATOM. Результат меня удивил.

Во-первых, разница между icc, aocc и gcc на новом хеше оказалась пренебрежимо малой, а на Intel-овом процессоре так даже в пользу gcc. Лёша Дегтярёв в своё время код оптимизировал неплохо.

Во-вторых, по подписи AMD-шный компилятор оказался быстрее процентов на 10 (на нашей арифметике), чем gcc, на обеих архитектурах, а Intel неожиданно отстал фатально даже от gcc на AMD-шных процессорах и пришёл ноздря в ноздрю c aocc на Intel-овом.

В-третьих, по шифру (который «старый» ГОСТ) AMD-шный компилятор быстрее gcc на 12% на AMD и примерно одинаков на Intel.

В-четвёртых, AMD-шный профайлер (который CodeXL) отказался показывать мне, что за код генерит AMD-шный компилятор, что отдельно смешно.

Что с этими данными делать, я пока не знаю. Ну то есть мы кое-что учтём в политике распространения, я надеюсь. А вообще я хочу об этом поговорить, но пока не знаю, с кем.

Предыдущая запись про сравнение компиляторов.

Update: Максим Дунин убедил меня, что скорее всего это эффект нового clang по сравнению с не новым gcc, но вопрос о целесообразности компилятора от Intel, пожалуй, закрыт.
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2019-02-06 06:24 pm (UTC)(link)
А clang? Почему его в сравнение не включили?

И gcc какой - свежий (8.2, 7.4) или древний?
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2019-02-06 06:37 pm (UTC)(link)
То есть который в текущем Debian stable.
Попробуй сравни с последним, который в текущей не-LTS убунте или Debian Testing.
И с 7.3 который в текущем LTS. Не зря же они сейчас первую цифру в версии меняют.
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2019-02-06 06:45 pm (UTC)(link)
Ну прежде чем решать, нужен ли несвободный компилятор, надо найти лучший из свободных, чтобы с ним сравнивать.
nasse: (Default)

[personal profile] nasse 2019-02-06 06:45 pm (UTC)(link)
Где-то в ноябре beldmit игрался в тестинг.
Сколь я помню, не впечатлило.
Но можно еще раз попробовать.
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2019-02-06 06:46 pm (UTC)(link)
Меня зато впечатлило, насколько активнее 8-я версия начала хватать программиста за руку на предмет неаккуратного кода.

То есть вплоть до того, что апстрим постгреса вынужден был некоторые ворнинги поотключать. Иначе слишком много пришлось бы возиться с чисткой кода.
Edited 2019-02-06 18:47 (UTC)
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2019-02-06 07:17 pm (UTC)(link)
А я ее уже произвел. Правда, остались ворнинги в древних компиляторах - у меня самый старый из поддерживаемых дистрибутивов SLES11, там 4.3. Там не почистишь так просто, так как в составе дистрибутива идет версия bison, которая не умеет генерировать warning-free code и версия python, хидеры которой полны warning-ов.

Поэтому у меня сейчас warning free начиная с 6-й. Ну и clang тоже - у него паранойя в другую сторону.

Заодно в процессе выучил какие модификаторы форматов нужно использовать для печати size_t и прочих интересных типов, чтобы warning-ов не было ни на 32, ни на 64 битных платформах. Вот бы еще визуалковый ворнинги победить...


ext_646638: (Default)

[identity profile] rdia.livejournal.com 2019-03-02 03:44 am (UTC)(link)
У меня не получалось на gcc 5/последнем sunpro избавиться от всех предупреждений от обоих компиляторов - они просто конфликтовали между собой.
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2019-03-02 06:09 am (UTC)(link)
sunpro у меня нет. Хотя может и зря. Но у меня спарк древний и слабенький.
nasse: (Default)

[personal profile] nasse 2019-02-06 09:40 pm (UTC)(link)
так тебенадо новый gcc, или как?
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2019-03-02 03:42 am (UTC)(link)
С учётом того, как они начали поступать с UB, разработчиков GCC пустили бы на колбасу, не начни они выдавать больше предупреждений. Так это хоть чуть-чуть морально компенсирует поведение в стиле "программист не должен делать ошибок".