TGViewer
Программирование {BookFlow} Программирование {BookFlow} @bookflow · 15.6K subscribers
Post #4233 1.32K
🔥 Оптимизация целочисленного деления: Clang vs GCC vs MSVC

Автор блога NukeTheBees решил проверить, как разные компиляторы оптимизируют преобразование 1D-индекса в 3D-координаты сетки. Эта частая задача требует вычисления как частного, так и остатка от деления.

Архитектура x86 позволяет сделать это максимально эффективно - всего двумя инструкциями idiv (она одновременно вычисляет и частное, и остаток, помещая их в разные регистры). Автор протестировал два подхода на C++:
1️⃣ Стандартные операторы / и %
2️⃣ Использование функции std::div

📊 Что показали компиляторы?

🔹 Вариант с операторами (/ и %):
🏆 Clang сгенерировал идеальный код: всего 2 инструкции idiv и никаких лишних обращений к памяти.
🥈 GCC тоже справился за 2 idiv, но зачем-то скинул промежуточные результаты в стек перед возвратом.
❌ MSVC оплошал и выдал избыточную третью инструкцию деления при вычислении y.

🔹 Вариант с std::div (в надежде помочь компилятору):
✅ MSVC резко исправился, заинлайнил вызовы и выдал те самые оптимальные 2 idiv.
❌ Зато Clang и GCC внезапно отказались инлайнить std::div! В итоге они сгенерировали настоящие вызовы функций (call div), что из-за накладных расходов делает этот код медленнее первого варианта.

💡Ни один из подходов на C++ не смог заставить все три компилятора выдать идеальный машинный код. Поэтому для критически важных участков производительности не стоит слепо доверять компилятору - всегда заглядывайте в сгенерированный ассемблер (например, через Compiler Explorer).

🔗 Подробный разбор ассемблерного кода читайте в статье: https://nukethebees.com/int-division-modulo-optimisation-differences-clang-gcc-msvc/

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
  • 🔥 4
  • 👍 3
  • ❤ 2
  • 🤷‍♂ 1
  • 🏆 1
More from @bookflow
  1. Sep 24, 2026Работа с HTTP API (на практике) Подготовил мини-серию из пары десятков практических задани…
  2. Sep 22, 2026🔎 Kor — найти забытые ресурсы в Kubernetes После экспериментов и релизов в кластере остаю…
  3. Sep 20, 2026Детальный обзор полей Галуа "Попросите Якоби или Гаусса публично высказать своё мнение — н…
  4. Sep 17, 2026🥑 Apache Guacamole Это шлюз для удалённого рабочего стола, не требующий установки клиентс…
  5. Sep 16, 2026Сравнение SHELLs: BASH vs ZSH vs FISH Делаем красочный и удобный терминал. источник ♻️ Сде…
  6. Sep 14, 2026Исследователи из Университета Карнеги — Меллона разработали систему, использующую обычные…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →