![]() |
Compilierzeit zu hoch, was ist falsch?
Hallo,
nach der Migration von Delphi 7 auf Delphi 2010 hat sich die Buildzeit von einem Laufzeitpackage drastisch erhöht. Mal davon abgesehen das ich weiß das die Packages jetzt unterschiedlich aufgerufen werden, kann mir jemand sagen ob es an bestimmten Einstellungen des Projektes liegt oder allgemein an Delphi 2010 (höhere Compilierzeiten)? C:\Programme\Borland\Delphi7\bin\dcc32.exe -W -H -M -I -Q -GD -R..\diversePfade -UdiversePfade-LE..\run -N..\dcu -LN..\dcu ..\packages\TestProjekt.dpk [08:47:48]: [exec] Borland Delphi Version 15.0 [08:47:48]: [exec] Copyright (c) 1983,2002 Borland Software Corporation [08:50:58]: [exec] 504750 Zeilen, 196.25 Sekunden, 6917196 Bytes Code, 39629 Bytes Daten. C:\Programme\Embarcadero\RAD Studio\7.0\bin\dcc32.exe -$D- -$L- -$Y- --no-config -B -Q -Z -AWinTypes=Windows;WinProcs=Windows;DbiProcs=BDE;Db iTypes=BDE;DbiErrs=BDE -DRELEASE -I"C:\Programme\Embarcadero\RAD Studio\7.0\lib\DE";..\dcu;..\lib\Jcl\source\common ;..\lib\Jcl\source\include;..\lib\Jcl\source\windo ws;"C:\Programme\Embarcadero\RAD Studio\7.0\lib";\Imports;"C:\Programme\Embarcadero \RAD Studio\7.0\Imports";"C:\Programme\Embarcadero\RAD Studio\7.0\Lib\Indy10";"C:\Dokumente und Einstellungen\All Users\Dokumente\RAD Studio\7.0\Dcp";"C:\Programme\Embarcadero\RAD Studio\7.0\include";"C:\Programme\Embarcadero\RAD Studio\7.0\RaveReports\Lib" -LE"C:\Dokumente und Einstellungen\All Users\Dokumente\RAD Studio\7.0\Bpl" -LN..\dcu -N0..\dcu -NB..\dcu -O..\dcu;..\lib\Jcl\source\common;..\lib\Jcl\source \include;..\lib\Jcl\source\windows;"C:\Programme\E mbarcadero\RAD Studio\7.0\lib";\Imports;"C:\Programme\Embarcadero \RAD Studio\7.0\Imports";"C:\Programme\Embarcadero\RAD Studio\7.0\Lib\Indy10";"C:\Dokumente und Einstellungen\All Users\Dokumente\RAD Studio\7.0\Dcp";"C:\Programme\Embarcadero\RAD Studio\7.0\include";"C:\Programme\Embarcadero\RAD Studio\7.0\RaveReports\Lib" -R"C:\Programme\Embarcadero\RAD Studio\7.0\lib\DE";..\dcu;..\lib\Jcl\source\common ;..\lib\Jcl\source\include;..\lib\Jcl\source\windo ws;"C:\Programme\Embarcadero\RAD Studio\7.0\lib";\Imports;"C:\Programme\Embarcadero \RAD Studio\7.0\Imports";"C:\Programme\Embarcadero\RAD Studio\7.0\Lib\Indy10";"C:\Dokumente und Einstellungen\All Users\Dokumente\RAD Studio\7.0\Dcp";"C:\Programme\Embarcadero\RAD Studio\7.0\include";"C:\Programme\Embarcadero\RAD Studio\7.0\RaveReports\Lib" -U"C:\Programme\Embarcadero\RAD Studio\7.0\lib\DE";..\dcu;..\lib\Jcl\source\common ;..\lib\Jcl\source\include;..\lib\Jcl\source\windo ws;"C:\Programme\Embarcadero\RAD Studio\7.0\lib";\Imports;"C:\Programme\Embarcadero \RAD Studio\7.0\Imports";"C:\Programme\Embarcadero\RAD Studio\7.0\Lib\Indy10";"C:\Dokumente und Einstellungen\All Users\Dokumente\RAD Studio\7.0\Dcp";"C:\Programme\Embarcadero\RAD Studio\7.0\include";"C:\Programme\Embarcadero\RAD Studio\7.0\RaveReports\Lib" -K00400000 -GD -NO..\dcu -W^ -W-HIDDEN_VIRTUAL TestProjekt.dpk [08:07:21]: [exec] Embarcadero Delphi für Win32 Compiler-Version 21.0 [08:15:46]: [exec] Copyright (c) 1983,2009 Embarcadero Technologies, Inc. [08:15:46]: [exec] 518559 Zeilen, 1002.59 Sekunden, 9584228 Byte-Code, 40468 Byte-Daten. Grüße, Andreas |
AW: Compilierzeit zu hoch, was ist falsch?
Schon den Virenscanner konfiguriert das er alle Delphi-Dateien (dcu, pas, ...) ignoriert?
|
AW: Compilierzeit zu hoch, was ist falsch?
Auf den "Build-Maschinen" lief noch nie und läuft auch aktuell kein Antiviren-Tool.
Es muss vermutlich an Delphi 2010 oder den neuen Projekt-Settings liegen. Aufgerufen wird in Delphi 2010 mit msbuild.exe TestProjekt.dproj /p:config=Release /t:Build |
AW: Compilierzeit zu hoch, was ist falsch?
Also ich selbst nutze zwar kein Delphi 2010, aber ich kenne jemanden, der es benutzt und er ist voll und ganz zufrieden damit. Die Compilierzeit ist extrem schnell (habe es selbst miterlebt ^^). Und sein Projekt ist auch nicht gerade klein. Also ich gehe davon aus, dass es nicht mit Delphi 2010 zusammenhängt.
|
AW: Compilierzeit zu hoch, was ist falsch?
Zitat:
Build = Alles neu erzeugen ... kannst ja mal schauen was dem "einfachen" Compilieren entspricht |
AW: Compilierzeit zu hoch, was ist falsch?
Die Compilierzeit mit Delphi7 entspricht auch einem "Alles neu erzeugen" da vorher ein Clean durchgeführt wird.
|
AW: Compilierzeit zu hoch, was ist falsch?
Dann weiß ich auch nicht weiter.
FinalBuilder+dcc32.exe schaft bei uns mehr Codezeilen in der gleichen Zeit, wie bei deinem D7 :gruebel: |
AW: Compilierzeit zu hoch, was ist falsch?
Hmm. Liegt es vielleicht an deinem PC selbst. Arbeitsspeicher zu gering, vlt. auch Prozessorleistung (was ich bezweifle)?
Ich habe bei mir z.B. ein Projekt compiliert, dass aus 1 Million Zeilen bestand und das hat vielleicht 30 Sekunden bis 1 Minute gedauert. Aber 16 Minuten bei 500.000 Zeilen ist doch schon etwas zu viel. Poste mal dein System bzw. deine Hardware. |
AW: Compilierzeit zu hoch, was ist falsch?
Zitat:
|
AW: Compilierzeit zu hoch, was ist falsch?
@AThurm : Doch, doch, glaube es. Ich habe ein Projekt mit etwas über 1 Mio. Zeilen. "Projekt ... erzeugen" dauert ca 1 Min.
|
AW: Compilierzeit zu hoch, was ist falsch?
Zitat:
|
AW: Compilierzeit zu hoch, was ist falsch?
Da wären Angaben über Deine Hardware schon vorteilhaft... Ansonsten, kein AV, keine Code-Dateien im LAN, kein??? Welche Experts hast Du im Delphi installiert?
|
AW: Compilierzeit zu hoch, was ist falsch?
4 GB arbeitsspeicher
Core2Duo 2,53 Ghz Keine Experts im Delphi installiert / Delphi 2010 mit allen offiziellen Updates Windows XP Kein Antivir keine Code Dateien im LAN |
AW: Compilierzeit zu hoch, was ist falsch?
Dann bin ich sprach- und ratlos... Ist der PC standalone, im Netz oder im Netz mit Domäne? Bei Domäne hab ich vor längerer Zeit, trotz Dateien im User-Verzeichnis, auch schon Sorgen beim Zugriff gehabt. Aber nicht do drastisch...
|
AW: Compilierzeit zu hoch, was ist falsch?
Vielleicht ein Hinweis?:
Bei mir ist es in Delphi 2009 / 2010 so, dass, falls viele Ausgabe-Hinweise oder -Warnungen in der Ausgabebox des Compilers ausgegeben werden, die Compilierzeit um den Faktor 100-500 höher ist. Vielleicht diese mal testweise deaktivieren? Allerdings ist das ja der CMD-Compiler..mhm...ich weiss nicht, ob das darauf auch Einfluss hat... |
AW: Compilierzeit zu hoch, was ist falsch?
Jo, dass ist mir auch grad noch eingefallen... Zu spät :stupid:
|
AW: Compilierzeit zu hoch, was ist falsch?
Es gibt da bestimmte Compilerwarnungen, die wenn sie aktiviert sind die Kompilierzeit dramatisch erhöhen.
Ich habe bei Tests so Faktor 5 bis 20 gesehen. Leider kann ich mangels aktueller Delphi-IDE nicht mehr genau sagen welche es waren, aber ich denke diese müssten es sein:
Delphi-Quellcode:
PS: das kommt davon, wenn man die vorherigen Postings nicht liest.
{$WARN SYMBOL_DEPRECATED OFF}
{$WARN SYMBOL_LIBRARY OFF} {$WARN SYMBOL_PLATFORM OFF} {$WARN UNIT_LIBRARY OFF} {$WARN UNIT_PLATFORM OFF} {$WARN UNIT_DEPRECATED OFF} {$WARN UNSAFE_TYPE OFF} {$WARN UNSAFE_CODE OFF} {$WARN UNSAFE_CAST OFF} siehe #15 von blackfin |
AW: Compilierzeit zu hoch, was ist falsch?
Das UnsafeCase sollte man lieber anlassen, denn das könnten auch Mal schwerere Problemchen sein,
wie z.B. wie einen AnsiString nach PChar casten zu wollen. Das Deprecated-Zeugs merkt man spätestens, wenn in einer späteren Delphi-Version dieses endgültig weg ist. (kann aber nicht schaden das jetzt schon zu wissen und gleich zu beseitigen :stupid: ) Und der Rest ist eigentlich nut "sinnloses" .Net-Kompatibilitätsgedöhns, was eh kein Schein mehr interessiert, vorallem seit Delphi .NET sowieso tot ist @blackfin: Compilerschalter im Code haben auf alle Compiler eine Wirkung, schießlich interpretiert der Commandozeilencompiler auch den Code. Nur kann man beim Commandozeilencompiler via Parameter einige die Voreinstellungen ändern, welches beim Inlinecompiler über die Projektoptionen gemacht wird. |
AW: Compilierzeit zu hoch, was ist falsch?
Zitat:
|
AW: Compilierzeit zu hoch, was ist falsch?
Man könnte mal versuchen über die OpenToolAPI sowas wie AQTime in die IDE einzuschleußen.
Eventuell bekommt man da etwas vom Inlinecompiler mit. Ansonsten bleibt nur noch eine Anfrage im QC oder direkt an den Support. Hoffentlich kommt dann keine Antwort ala "Kaufen sie XE, denn dort ist ein Bugfix dafür vorhanden". |
AW: Compilierzeit zu hoch, was ist falsch?
Ich hatte etwas in der Art 2 Mal.
Einmal waren für das Debugger - Ereignisprotokoll alle möglichen Meldungen angehakt. Ein anderes Mal waren es nicht mehr existierende Pfadangaben (ich meine, es war ein Suchpfad in den Projektoptionen). Frank |
AW: Compilierzeit zu hoch, was ist falsch?
Zitat:
Zitat:
Ist es ein Problem für den Compiler wenn die Suchpfade relativ angegeben sind ? (Sie sind nicht "grau" (Existiert also) unterlegt) Zum Beispiel: ..\source\ |
AW: Compilierzeit zu hoch, was ist falsch?
Zitat:
Der Grund war einfach, daß in einem DesignTimePackage das EurekaLog mit drin war und es sich somit auch in der IDE einnistete. :stupid: Package wäre der einfache Weg und über die OTA kommt man eventuell an mehr Infos ran. An dieser Stelle würde ich relative Pfade weglassen, denn sie hängen ja vom aktuellen Arbeitsverzeichnis ab und das kann sich schnell mal ändern. Du kannst aber Variablen nutzen, so wie das $BDS oder $(BDS), wobei man dort alles aus den Umgebungsvariablen nutzen kann. $TEMP = $(TEMP) und entspricht quasi einem %TEMP% $(TEMP) ist dafür, falls weitere Buchstaben/Zahlen direkt folgen $TEMPXYZ <> $(TEMP)XYZ |
AW: Compilierzeit zu hoch, was ist falsch?
Ich konnte immer noch nicht rausfinden woran es liegt, ich glaub die Compilierzeit ist einfach so hoch, ich werde jetzt damit leben müssen =)
Ich hatte es mit festen Pfaden im Suchpfad probiert, brachte auch nix. Die Idee mit AQTime gestaltet sich etwas schwerer, da ich mich zu wenig damit auskenne :( Was mir aufgefallen ist, er macht 120.000 Zeilen Code in ein paar Sekunden und bleibt dann bei diversen Dateien 30-40 Sekunden stehn, allerdings habe ich diese Dateien überprüft und konnte nichts schlimmes feststellen (Dateigröße, Resourcen, Anzahl der Zeilen) |
AW: Compilierzeit zu hoch, was ist falsch?
Hallo,
hast du mal einen Unit-Uses-Analyser drüber laufen lassen? Das bringt u.U. auch schon echt was dort etwas aus zu misten. Das er ein ein paar Units hängt, könnte schon damit zusammen hängen, dass er große Uses-Listen richtig sortieren muss, um sie entsprechend ab zu arbeiten. Außerdem hast du geschrieben, dass du per Projektoptionen in der IDE die Zeit verändern konntest aber nicht im CMD-Compiler. Nur so blöd gefragt, hast du diese "Änderungen" der IDE in deine Comandozeilenaufruf übernommen oder per include in jede Unit eingefügt? (per Include müsste ja wirklich in jede Unit aufgenommen werden). Gruß, Chris |
AW: Compilierzeit zu hoch, was ist falsch?
Mittlerweile habe ich einen Ansatz gefunden der vieleicht was bringen wird, danke an alle!!!
Mithilfe eines Tools lassen sich folgende Fälle darstellen:
Delphi-Quellcode:
unit Unit36;
interface implementation uses Unit37; end.
Delphi-Quellcode:
welche ein Zirkulären-Verweis darstellen, ich vermute das sowas den Compiler verlangsamt, da es bei uns massig davon gibt, eine Unit verweist teilweise auf Umwege 84 mal auf sich selber.
unit Unit37;
interface uses Unit36; implementation end. Hat hier jemand Erfahrungen gemacht und kann bestätigen, dass das Auflösen solcher Zirkulären Verweise den Compileprozess verbessert? Zusätzlich alle UNUSED Uses entfernen mithilfe von CCWizard. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz