Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Compilierzeit zu hoch, was ist falsch? (https://www.delphipraxis.net/160113-compilierzeit-zu-hoch-ist-falsch.html)

AThurm 28. Apr 2011 09:56

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

Bernhard Geyer 28. Apr 2011 10:06

AW: Compilierzeit zu hoch, was ist falsch?
 
Schon den Virenscanner konfiguriert das er alle Delphi-Dateien (dcu, pas, ...) ignoriert?

AThurm 28. Apr 2011 10:12

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

Aviator 28. Apr 2011 10:37

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.

himitsu 28. Apr 2011 11:01

AW: Compilierzeit zu hoch, was ist falsch?
 
Zitat:

/t:Build
?

Build = Alles neu erzeugen ... kannst ja mal schauen was dem "einfachen" Compilieren entspricht

AThurm 28. Apr 2011 11:22

AW: Compilierzeit zu hoch, was ist falsch?
 
Die Compilierzeit mit Delphi7 entspricht auch einem "Alles neu erzeugen" da vorher ein Clean durchgeführt wird.

himitsu 28. Apr 2011 11:56

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:

Aviator 28. Apr 2011 11:58

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.

AThurm 28. Apr 2011 12:01

AW: Compilierzeit zu hoch, was ist falsch?
 
Zitat:

Zitat von Aviator (Beitrag 1097401)
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.

Bitte zwischen Compilieren und "Alles neu erzeugen" diferenzieren, ich glaube kaum das 1 Millionen Zeilen Code in 30 Sekunden bis 1 Minute komplett "Neu erzeugt" sind. Das oben bennante Projekt "compiliert" danach auch in 27 Sekunden!

ralfschwalbe 28. Apr 2011 12:11

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.

AThurm 28. Apr 2011 12:14

AW: Compilierzeit zu hoch, was ist falsch?
 
Zitat:

Zitat von ralfschwalbe (Beitrag 1097405)
@AThurm : Doch, doch, glaube es. Ich habe ein Projekt mit etwas über 1 Mio. Zeilen. "Projekt ... erzeugen" dauert ca 1 Min.

Wo ist dann bei mir der Wurm drin ? :cry:

ralfschwalbe 28. Apr 2011 12:18

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?

AThurm 28. Apr 2011 12:22

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

ralfschwalbe 28. Apr 2011 12:27

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...

blackfin 28. Apr 2011 12:39

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...

ralfschwalbe 28. Apr 2011 12:55

AW: Compilierzeit zu hoch, was ist falsch?
 
Jo, dass ist mir auch grad noch eingefallen... Zu spät :stupid:

sx2008 28. Apr 2011 23:14

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:
{$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}
PS: das kommt davon, wenn man die vorherigen Postings nicht liest.
siehe #15 von blackfin

himitsu 29. Apr 2011 07:29

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.

AThurm 29. Apr 2011 12:28

AW: Compilierzeit zu hoch, was ist falsch?
 
Zitat:

Zitat von blackfin (Beitrag 1097415)
Allerdings ist das ja der CMD-Compiler..mhm...ich weiss nicht, ob das darauf auch Einfluss hat...

Nein hat es nicht. Ich habe mal alle Warnungen aus Spass deaktiviert, in der IDE liefs dann statt mit 1000 Sekunden in 600 (was immer noch viel zu hoch ist, im Vergleich zu Delphi 7), aber in DOS blieb es bei den 1000s. Ich versuche jetzt auserhalb der Domaine das Projekt zu compilieren, ansonsten fällt mir nichts mehr ein :cry:

himitsu 29. Apr 2011 12:32

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".

dataspider 29. Apr 2011 12:40

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

AThurm 29. Apr 2011 14:49

AW: Compilierzeit zu hoch, was ist falsch?
 
Zitat:

Zitat von himitsu (Beitrag 1097611)
Man könnte mal versuchen über die OpenToolAPI sowas wie AQTime in die IDE einzuschleußen.
Eventuell bekommt man da etwas vom Inlinecompiler mit.

Gute Idee, kann ich mal ausprobieren!

Zitat:

Zitat von dataspider (Beitrag 1097615)
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

Das probiere ich mal aus, danke.
Ist es ein Problem für den Compiler wenn die Suchpfade relativ angegeben sind ? (Sie sind nicht "grau" (Existiert also) unterlegt)
Zum Beispiel: ..\source\

himitsu 29. Apr 2011 15:33

AW: Compilierzeit zu hoch, was ist falsch?
 
Zitat:

Zitat von AThurm (Beitrag 1097656)
Gute Idee, kann ich mal ausprobieren!

Wir hatten jetzt mal das "Problem", dap die IDE-Exceptions (bei Fehlern in der IDE) urplötzlich über EurekaLog liefen.
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

AThurm 3. Mai 2011 10:00

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)

ChrisE 3. Mai 2011 12:28

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

AThurm 6. Mai 2011 12:49

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:
unit Unit37;

interface

uses Unit36;

implementation

end.
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.

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 06:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz