RAD Studio 10.1 Berlin Update 2, bcc32c beschleunigen?



  • Hallo zusammen,

    der neue bcc32c ist deutlich langsamer als der klassische bcc32, und jetzt versuche ich die Übersetzungszeit zu verkürzen. Dazu gibt es grob zwei Möglichkeiten:

    1. die Verwendung von Vorkompilierten Header Dateien
    2. parallele Übersetzung

    Ich habe ein Projekt mit ca. 150 Dateien, das ich zum Testen benutze. Egal welche Einstellungen ich anwende, die Übersetzungszeit für einen Build All liegt immer bei ca. 3:30 min, +/- 5 Sekunden, bei allen Kombinationen aus den unten aufgeführten Konfigurationen.

    Zu 1)
    Iwie funktioniert das nicht richtig, bzw. bringt nichts. Ich habe eine PCH.h Datei nach dieser Vorgabe erzeugt und zum Projekt hinzugefügt. In dieser Header Datei habe ich die häufig benutzten include Dateien inkludiert und mit #pragma hdrstop abgeschlossen. Der Compiler erzeugt auch eine etwa 4MB große PCH.pch Datei im Ausgabeverzeichnis. Der bcc32c Aufruf beeinhaltet die option --include-pch PCH.pch und die PCH Datei scheint also benutzt zu werden, aber an der Übersetzungszeit ändert sich nix.

    Zu 2)
    Bringt auch nichts. Ich habe das auf zwei unterschiedliche Arten eingestellt und getestet, aber keine der beiden Methoden bringt einen Geschwindigkeitsgewinn. Es werden zwar mehrere bcc32c Prozesse gestartet, aber nur einer davon nutzt einen Kern aus (~25% Last), die übrigen sind alle idle.

    2.1) In den Projekteigenschaften unter "Projekteigenschaften" den Punkt "C++ Compiler in separatem Prozess ausführen" und die Anzahl der Prozesse auf 4 erhöht (Anzahl Cores meiner CPU).
    2.2) In den Projekteigenschaften unter "C++ Compiler - Erweitert" unter "Weitere Optionen für die Übergabe an den Compiler" die Option "--jobs=0" eingetragen. Auch "--jobs=4" bringt nichts.

    Hat jemand eine Idee, warum nichts davon die Übersetzungszeit verkürzt? Oder noch besser, wie man dem bcc32c Beine macht?



  • Mit Bordmitteln scheint das wirklich nicht zu gehen, die vorkompilierten Header und paralleles Übersetzen sind für den bcc32c wohl noch buggy,

    Es gibt allerdings TwineCompile, das sich als Wrapper zwischen die IDE und den bcc32c klinkt. Das erzeugt und benutzt automatisch vorkompilierte Header und benutzt mehrere Prozesse zum Übersetzen. Damit habe ich das Übersetzen um bis zu Faktor 10 (!!) beschleunigen können.



  • DocShoe schrieb:

    ...

    Es gibt allerdings TwineCompile, das sich als Wrapper zwischen die IDE und den bcc32c klinkt. Das erzeugt und benutzt automatisch vorkompilierte Header und benutzt mehrere Prozesse zum Übersetzen. Damit habe ich das Übersetzen um bis zu Faktor 10 (!!) beschleunigen können.

    Den verwende ich bei mir auch schon seit einer ganzen Weile, allerdings war der Grund bei mir, dass regelmäßig beim Start des Compilierens die Meldung "Not enough SAVEMEM" kam. Und jedesmal musste dann die IDE neu gestartet werden. RAM- Speicher hat mein System genug (12GB RAM).