Zitat von
Olli:
Der eigentliche zeitliche Vorteil entsteht durch Single-Pass- gegenüber Multi-Pass-Compiler.
Das mag ein Grund sein, aber bei C++ müssen für jede .cpp/.cc Datei jedesmal alle eingebundenen Header durchlaufen werden. Deswegen wurden vorkompilierte Header eingeführt, die aber dank der Makros nicht immer benutzt werden können, weil die Header je nach definiertem Makro mal dies und mal das enthalten können. Und diese vielen Headerdateien fehlen nun mal bei Delphi bzw. sind als Interface-Abschnitt bereits in den .dcu Dateien enthalten.
C++ und Pascal unterscheiden sich eben im Dateiverwaltungspunkt recht stark und darin liegt auch eine Menge an verlorener bzw. gewonnener Kompiliergeschwindigkeit.
C# kann vorkompilieren? Also ich habe vom C# Compiler noch nie eine .obj/.o Datei erhalten. Der meckert da nämlich immer, dass er kein main() gefunden hat. Das einzige was man da als vorkompilieren bezeichnen kann, sind Assemblies, aber die sindd wiederum bereits erstellte Projekte (DLLs).
Warum der C#-Compiler bei größeren Programmen schneller ist als der C++-Compiler liegt wohl daran, dass er nicht zig Millionen Zeilen Header einlesen und verarbeiten muss. (Schon mal Qt 4 kompiliert mir MSVC?)