C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.
C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.
2 195 подписчиков · @cpp_lib
К каналу →
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://m…
Читать далее →
873
Реклама
MemorySanitizer (MSAN), когда он нужен и как внедрять По разным оценкам, до 10% уязвимостей в коде на C и C++ являются следствием использования неинициализированной памяти (источн…
Читать далее →
1 012

🔥 Оптимизация целочисленного деления: Clang vs GCC vs MSVC Автор блога NukeTheBees решил проверить, как разные компилят

🔥 Оптимизация целочисленного деления: 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/

#cpp #programming

👉 @cpp_lib
🎯 Продвинутое использование отладчика GDB Приглашаем на открытый урок. 🗓 08 июля в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Системное программирование». Программа урок…
Читать далее →
927
Отрежьте мне миллиард символов: как C++20, string_view и шаблонный ад могут скрывать баг годами Вы наверно знаете что высший пилотаж он же Высокий Слог С++ это шаблоны и метапрогр…
Читать далее →
1 117
Другие главы канала «C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 23.09.2026
Respect++ #cpp #programming 👉 @cpp_lib
👁 172 просмотров
Глава от 22.09.2026
#cpp #programming 👉 @cpp_lib
👁 502 просмотров
Глава от 20.09.2026
Сегментация памяти в программе на C/C++ #cpp #programming 👉 @cpp_lib
👁 1 000 просмотров
Глава от 17.09.2026
RAII 2.0: RAII как архитектурный инструмент в C++ Идиома RAII — давно зарекомен…
👁 866 просмотров
Глава от 17.09.2026
ИТ-сообщество, хватит онлайн-митапов – приходите офлайн. 18 сентября в Москве с…
👁 486 просмотров
Глава от 15.09.2026
Удобный способ работы с перечислениями в C++ — приведение enum к строке и обратн…
👁 833 просмотров
Глава от 14.09.2026
Лаконичный макрос defer для C++17 Ручное управление ресурсами в низкоуровневом …
👁 844 просмотров
Глава от 13.09.2026
AI-агенты уже экономят специалистам до 15 часов в неделю. У Яндекс Практикума е…
👁 676 просмотров
Глава от 13.09.2026
Низкоуровневый скриптинг на C++ для игровых движков Я постарался охватить тольк…
👁 692 просмотров

Популярные посты канала «C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.»

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 8 735 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 8 715 просмотров
QML и Widgets в одном проекте: решение без костылей Разработка приложения для настольных или встраиваемых платформ часто упирается в выбор …
👁 8 708 просмотров
Коллекция библиотек и фреймворков для C++ Список удивительных фреймворков, библиотек, ресурсов и блестящих вещей на C++ (или C). Вдохновлен…
👁 8 697 просмотров
Пишем игру для NES на C Всем привет. Я Даг. Добро пожаловать в мой учебник - Как запрограммировать игру NES на C. Вы можете сделать оригина…
👁 8 686 просмотров
Веселье с type erasure: делаем обертку с семантикой значения для полиморфных типов. Павел Новиков Цель доклада — познакомить с подноготной…
👁 8 639 просмотров
О векторном вычислении экспоненциальной функции Однажды передо мной встала задача векторизовать функцию вычисления экспоненты. Неожиданно о…
👁 8 595 просмотров
Практика языка C. Константин Владимиров. На этом занятии мы завершим первый семестр знакомства с основами языка C и разберём многомодульны…
👁 8 586 просмотров
Контракты для С++ Тимур Думлер Контрактное программирование — эффективный подход к написанию более безопасных и корректных программ. Он был…
👁 8 585 просмотров
🐦 Flappy Bird на Си: Вес APK < 100 Килобайт! 🚀 В сентябре 2024 года, увидев Flappy Bird на C# в дискорд-канале Raylib, я решил попробовать …
👁 8 527 просмотров
Преобразование JSON в объекты C++ на этапе компиляции: демонстрация возможностей принятой в C++26 рефлексии https://brevzin.github.io/c++/2…
👁 8 473 просмотров
Как в 19 лет я начал путь разработчика встраиваемого ПО Привет! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успел поработать в…
👁 8 424 просмотров
Создание игры Крестики-нолики на языке C++ #cpp #programming 👉 @cpp_lib
👁 8 417 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 8 413 просмотров
Сборка C++ проектов. CMAKE. Game Engine серии 0:00:00 - Введение 0:01:32 - Пишем мини игру. FightClub 0:17:03 - MSBUILD 0:19:20 - Собственн…
👁 8 397 просмотров
⚠️ Можно знать алгоритмы машинного обучения и всё равно получать плохие результаты. Большинство проблем моделей начинаются с некачественной …
👁 8 376 просмотров
Константин Владимиров — О денотации: разрешение имен и его пересмотр в C++23 Этот доклад — попытка сделать темную и мрачную область разреше…
👁 8 356 просмотров
Оптимизация GUI на Qt Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GU…
👁 8 329 просмотров
🐦 Flappy Bird на Си: Вес APK < 100 Килобайт! 🚀 В сентябре 2024 года, увидев Flappy Bird на C# в дискорд-канале Raylib, я решил попробовать …
👁 8 325 просмотров
Плывущий экран. Вирус на C++. Melting Screen Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использо…
👁 8 316 просмотров

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@canalmaxone
AntiCloudMod
👥 365 748 · -8 173/7д
@BelgorodDRONE
Информация БПЛА Белгород, Белгородский район
7924148410
👥 199 487 · +1 239/7д
@biologia89
РОБЛОКС🔷
РОБЛОКС В МАКС! Реклама: https://clck.ru/3Tmmgx
👥 179 445 · -1 751/7д
@WylsacomRed
Wylsacom Red
Официальный канал Wylsacom в Max. Тут всё про технологии и жизнь в ногу со временем! Розыгрыши: kichaev@wylsacom.media По вопросам сотрудничества: https://wylsacom.medi…
👥 172 201 · +4 791/7д
@TikTokModCloud
TikTokModCloud
Официальные обновления стабильного мода TikTok Чат: https://clck.ru/3S6mVh По рекламе: https://iimax.ru/dim4ugan
👥 123 700 · +1 450/7д
@yandex_browser
Яндекс Браузер с Алисой AI
Привет, это канал команды Яндекс Браузера Показываем, как превратить наши технологии в ваши возможности. Скачать Браузер тут: https://browser.yandex.ru/ Наше сообще
👥 78 925 · +280/7д
🏷 Темы и теги
#cpp #programming #системное программирование #c++ #highload #stl #boost #embedded #Технологии
📋 О канале C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.
Канал для серьезных C++ программистов. Глубокое погружение в STL, Boost и метапрограммирование (Templates). Управление памятью (Memory Management), умные указатели и безопасность кода. Разработка высоконагруженных систем, сетевое программирование и Embedded (встраиваемые системы). Сборка через CMake, компиляторы GCC/Clang. Подготовка к собеседованиям: LeetCode, System Design и ООП.
🔍 Архив всех постов Макс
Поиск по 16,996,906 постам из 203,890 каналов
Подключить за 490 ₽/мес →
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
📊 Аналитика канала «C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
➕
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.