Evgenii Legotckoi
Evgenii Legotckoi10 октября 2018 г. 9:32

C++ - Ускоряет ли сборку #pragma once?

Работа над крупным проектом позволяет в некоторых случаях проверить некоторые теории, касающиеся языка программирования.

Всегда было интересно, действительно ли ускоряется сборка при использовании директивы #pragma once , вместо классического #ifndef #define #endif.

Проверить это ускорение на маленьком проекте довольно проблематично, ведь если проект собирается в среднем за 20 секунд, то и ощутимого ускорения мы скорее всего не увидим, поскольку длительность сборки всегда будет плавать от 17 до 23 секунд.

Но у меня выдалось свободное время и удалось проверить эту теорию на крупном проекте.


Входные данные

Что имеем:

  • Вопрос: Изменится ли скорость сборки проекта при изменении всех #ifndef #define #endif, в заголовочных файлах на #pragma once
  • Чтобы это проверить, нужно заменить дефайны на pragma once в 4874 заголовочных файлах
  • Компилятор MSVC 2017

Чтобы не быть голословным, вот скриншот коммита из Tortoise Git, в котором указаны изменения в 4874 файлах

Для исправления всех файлов я написал python скрипт, я не враг самому себе, чтобы исправлять все эти файлы вручную. Конечно не всё прошло гладко и пришлось кое-что поправить, но в данном случае это было не так много работы.

Результат

В итоге я не увидел разницы.

До изменения проект компилировался 15 минут 52 секунды в среднем .

После изменения проект компилировался 15 минут 50 секунд в среднем .

Если некоторые компиляторы и делают оптимизацию, то это нужно включать специальными флагами. По факту лобовое изменение не даёт никакого увеличения скорости сборки.

Если у вас был обратный опыт, отпишитесь пожалуйста, и скажите, как добились ускорения сборки с #pragma once.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

i
  • 8 ноября 2024 г. 1:32

It could cause harm to the unborn baby buy generic priligy

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
m
  • molni99
  • 26 октября 2024 г. 11:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80баллов,
  • Очки рейтинга4
m
  • molni99
  • 26 октября 2024 г. 11:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20баллов,
  • Очки рейтинга-10

C++ - Тест 003. Условия и циклы

  • Результат:42баллов,
  • Очки рейтинга-8
Последние комментарии
i
innorwall8 ноября 2024 г. 13:45
QML - Урок 002. Custom Button in QML Android 2007; 14 2 270 83 priligy dapoxetine 60mg Testicular imaging is sort of a unique niche right now, Гў
i
innorwall8 ноября 2024 г. 12:32
C++ - Ускоряет ли сборку #pragma once? It could cause harm to the unborn baby buy generic priligy
i
innorwall8 ноября 2024 г. 11:50
EVILEG-CORE. Использование Google reCAPTCHA buy priligy 60 urea in 50 patients treated by urea for mild hyponatremia developed it in the intensive care unit mean age 71 20 years
Сейчас обсуждают на форуме
i
innorwall8 ноября 2024 г. 16:11
добавить qlineseries в функции do i need a doctor prescription to buy priligy A single dose elicited strong neutralizing antibodies and protection against SARS CoV 2 challenge in rhesus macaques 28
9
9Anonim25 октября 2024 г. 19:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Игорь Максимов3 октября 2024 г. 14:05
Реализация навигации по разделам Спасибо Евгений!
F
Fynjy22 июля 2024 г. 14:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Следите за нами в социальных сетях