- 1. Eingabedaten
- 2. Ergebnis
Wenn Sie an einem großen Projekt arbeiten, können Sie in einigen Fällen einige der Theorien über eine Programmiersprache testen.
Ich habe mich immer gefragt, ob der Build wirklich schneller wird, wenn ich die Direktive #pragma once anstelle des klassischen #ifndef #define #endif. verwende.
Es ist ziemlich problematisch, diese Beschleunigung an einem kleinen Projekt zu überprüfen, denn wenn das Projekt in durchschnittlich 20 Sekunden zusammengestellt wird, werden wir höchstwahrscheinlich keine merkliche Beschleunigung sehen, da die Bauzeit immer zwischen 17 und 23 Sekunden schwankt.
Aber ich hatte Freizeit und konnte diese Theorie an einem großen Projekt testen.
Eingabedaten
Was wir haben:
- Frage: Wird sich die Baugeschwindigkeit des Projekts ändern, wenn alle #ifndef #define #endif, in Header-Dateien in #pragma once geändert werden?
- Um dies zu überprüfen, müssen Sie in den 4874 -Headerdateien einmal die Definitionen durch das Pragma ersetzen
- Compiler MSVC 2017
Nicht umsonst ist hier ein Screenshot eines Commits von Tortoise Git, der die Änderungen in 4874 -Dateien zeigt
Um alle Dateien zu reparieren, habe ich ein python -Skript geschrieben, ich bin nicht mein eigener Feind, um all diese Dateien manuell zu reparieren. Natürlich lief nicht alles glatt und ich musste etwas reparieren, aber in diesem Fall war es nicht so viel Arbeit.
Ergebnis
Am Ende konnte ich keinen Unterschied feststellen.
Vor der Änderung wurde das Projekt in durchschnittlich 15 Minuten 52 Sekunden kompiliert.
Nach der Änderung wurde das Projekt in durchschnittlich 15 Minuten 50 Sekunden kompiliert.
Wenn einige Compiler optimieren, muss dies mit speziellen Flags aktiviert werden. Tatsächlich erhöht die frontale Änderung die Baugeschwindigkeit nicht.
Wenn Sie die gegenteilige Erfahrung gemacht haben, melden Sie sich bitte ab und sagen Sie mir, wie Sie die Beschleunigung des Builds mit #pragma once erreicht haben.