Sorry für die späte Antwort, bin überrascht, dass das es so viele Rückmeldungen gab.
Ich versuche auf ein paar Punkte einzugehen:
Uns ist aufgefallen, dass der Compiler die ersten 1,5 Mio Zeilen rel. flott durchläuft (ca. 10-20 sek.) und dann aber an manchen Stellen sehr lange festhängt. Das sind meistens Zeilen aus USES im Implementation-Teil. Aber auch Zeilen aus USES im Interface-Teil. Das verstehen wir nicht ganz. (Evt. ist ja auch die Anzeige im Compilerfenster falsch oder irreführend.) Es widerspricht auch dem was
himitsu schreibt:
"Das was im USES der Implementation steht, das kann der Compiler in beliebiger Reihenfolge einbinden.
Auch werden UNITs der Implementation eventuell erst nach dem Code der Initialization geladen und bereits vor der Finalization entladen,
während die UNITs im Interface immer vor Initialization geladen und erst nach Finalization entladen werden, womit deren Funktionen dort (sicher) nutzbar sind."
Danke für den Hinweis! Hier werden wir noch mal prüfen und evt. ein paar mehr "cast's" in Kauf nehmen.
* USES-Sorter-Tool: Wir analysieren alle Abhängigkeiten unserer Units voneinander(Häufigkeit; Streuung;...) jeweils nach "interface" in "implementation" und bringen diese in die optimale Reihenfolge. Eine wichtige Regel hierbei, die für unser Projekt funktioniert:
Zuerst die Units, die keine Abhängigkeiten in unser Projekt haben (Delphi-Units,...), dann die Projekt-Units sortiert nach ihren Querabhängigkeiten und zwar die mit den MEISTEN ZUERST. (Unser Tool hat hierfür Schieberegler, mit denen man die Prioritäten der Verwendungen(verwendet / wird verwendet <=> interface / implementation) einstellen und optimieren kann.)
=> Das sind aber unsere Erfahrungswerte für SEATTLE und RIO, wir wissen nicht, ob das für andere Projekte und/oder andere Compiler gilt.
Refactoring: Ja! Immer und unbedingt! Je größer und langlebiger das Projekt umso notwendiger. Unser Projekt ist über mehr als 20 Jahre stetig gewachsen und nicht immer wurde konsequent dran geblieben - leider. Der Refactoring-Prozess ist deshalb aufwändig und oft rel. komplex und hat schon unzählige Stunden verschlungen.
Er darf nicht so viel Resourcen binden, dass inzwischen die Kunden abspringen
.
Compile-Zeiten (in Delphi eigentlich "Erzeugen"-Zeiten): Ich habe Euch Richtwerte geschrieben, die auf unseren Standard-Entwickler-Rechnern - alles lokal - so auftreten (z.B. I7-7700T 2,9GHz; 16GB
RAM; Win 10 Pro). Wir erzeugen in reichlich 6 min. mit IDEFixPack. Das ist ok für uns. Manche Entwickler brauchen selten zu erzeugen, meist reichen ein oder mehrere Strg+F9 hintereinander aus.
Die 40 Minuten beziehen sich auf Erzeugen ohne IDEFixPack z.B. in SYDNEY. (Ich kann Euch gern mal ein Video machen
) Virenscanner spielt keine Rolle. Aber vielleicht machen wir ja auch einen anderen grundlegenden Fehler oder wir haben falsche Einstellungen in der
IDE,... ?
Viele Grüße, Lars