Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Однострочное изменение в GCC привело к ускорению на 12% в одном тесте и замедлению на 14% в другом

24.06.2026 18:43 (MSK)

Инженер из компании Intel внёс в набор компиляторов GCC однострочное изменение, увеличивающее вес неверного предсказания ветвления на процессорах x86. Изменение позволило повысить производительность генерируемого кода при прохождении теста 544.nab_r на 12.7% при включении оптимизаций "-O2 -mtune=graniterapids" для CPU Intel Granite Rapids/Xeon 6 и на 12.1% при включении оптимизаций "-O2 -mtune=znver5" на CPU AMD Zen5.

Изменение веса с "COSTS_N_INSNS (2)" до "COSTS_N_INSNS (2) + 3" увеличивает значимость ошибки предсказания c 2 до 5 условных инструкций, что лучше отражает особенности конвейеров обработки команд (pipeline) в современных CPU, в которых ошибки предсказания ветвления более затратны. Изменение веса приводит к форсированию преобразования компилятором выражений "if" в условные команды без переходов, такие как CMOV, исключающие приостановки при неверном предсказании ветвления, вызванные необходимостью сброса состояния конвейера. Ранее вес "COSTS_N_INSNS (2) + 3" указывался в GCC только для процессоров Intel Ice Lake и Alder Lake, а теперь выставлен для общего (generic) профиля процессоров x86.

Примечательно, что после принятия патча всплыла регрессия, из-за которой тест "Hint" стал выполняться у одного из разработчиков GCC на 30% медленнее при сборке с опциями "-march=generic -mtune=znver5" и "-march=generic -mtune=graniterapids". Производительность прохождения тестов SPEC2017 и SPEC2026 после внесения изменения осталась на прежнем уровне. Наличие регрессии подтверждено автором изначального коммита, по его данным замедление прохождения теста Hint составляет 14% при сборке с опциями "-O2 -mtune=generic -march=x86-64-v3".

Замедление объясняется тем, что в коде теста Hint имеется только одна условная конструкция, преобразуемая GCC в представление на базе CMOV. Данная конструкция выполняется достаточно редко (в 3%) и её оптимизация не влияет на производительность. При этом изменение режима генерации кода привело к побочному эффекту, замедлившему выполнение более часто выполняемого кода.

  1. Главная ссылка к новости (https://www.phoronix.com/news/...)
  2. OpenNews: В GCC утверждено добавление бэкенда для WebAssembly
  3. OpenNews: Релиз набора компиляторов GCC 16
  4. OpenNews: Представлен бэкенд TPDE-LLVM, работающий в 10-20 раз быстрее LLVM в режиме без оптимизации
  5. OpenNews: В ядрах для платформы Android включена оптимизация AutoFDO
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65757-gcc
Ключевые слова: gcc, optimization, benchmark
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (11) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 19:14, 24/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Инженер из интел ускорил интел и замедлил амд? It's fine.
     
     
  • 2.3, Аноним (3), 19:17, 24/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы хоть осильте прочитать то, "комментаторы".
     
     
  • 3.4, Аноним (2), 19:20, 24/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    -mtune=znver5

    what seems to be the officer, problems?

     
     
  • 4.8, Rev (ok), 19:24, 24/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А ещё замедлило и дженерик x86:
    -mtune=generic -march=x86-64-v3
     
  • 3.5, Аноним (5), 19:20, 24/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Но именно это там и написано.
     
     
  • 4.6, Аноним (6), 19:21, 24/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет
     
  • 4.7, Аноним (3), 19:23, 24/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Повышение для CPU Intel Granite Rapids/Xeon 6 на 12.7%
    Повышение на 12.1% при включении в оптимизаций на CPU AMD Zen5
     
     
  • 5.9, Аноним (2), 19:39, 24/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    это для теста 544.nab_r, прочитайте про тест Hint в третьем абзаце
     
     
  • 6.11, Аноним (3), 19:48, 24/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да я всё прочитал и заголовок и четыре абзаца текста.
     
  • 3.10, Аноним (10), 19:48, 24/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да, автор изначального комментария не прочитал текст полностью, но я в голосину проорал с его комментария
     

  • 1.12, вдцлсоцжтфчлыь (ok), 20:17, 24/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    продолжайте наблюдение
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру