Sie können das IDE Compiler Plugin v.1.0 überprüfen, welches es ermöglicht, ein Delphi-Projekt aus der IDE mit einer älteren oder neueren Delphi-Compiler-Version zu kompilieren. Es kann verwendet werden, um ein Delphi 2007-Projekt mit dem Delphi 2009-Compiler zu kompilieren, um eine UNICODE-Version der ausführbaren Dateien zu erhalten, oder umgekehrt. Für Komponentenentwickler ermöglicht es dieses Plugin, ihre Komponenten für verschiedene Delphi-Versionen innerhalb einer IDE zusammenzustellen. Und Benutzer von Delphi 2007 können ihre Projekte gegen den Unicode Delphi 2009-Compiler testen. Plugin in jedem Befehlszeilen-Compiler AddRemove Delphi-Compiler-Optionen Umleiten von Suchpfaden Ändern der Compiler-Befehlszeile on the fly Vordefinierte 2009-Compiler-Konfiguration für Delphi 2007 Vordefinierte 2007-Compiler-Konfiguration für Delphi 2009 Delphi 2007 und 2009 müssen installiert sein Es ist nicht möglich, die Fehler zu debuggen Code, der von dem kompilierten Compiler kompiliert wurde. Das ist das einzige Werkzeug, das ich kenne, leider ist es nicht kompatibel mit Delphi 2010.My Unternehmen hat ein großes Projekt auf Delphi für mehr als ein Jahrzehnt ausgeführt. Unsere Codebasis wächst im Laufe der Jahre und steht nun bei rund 4 Millionen Zeilen Code. Kompiliergeschwindigkeit wird immer wichtiger. Weve verbrachte Zeit Ausräumen Einheit kreisförmige Referenzierung (eine bekannte Ursache für langsame Kompilierung) und untersuchte alle Aspekte des Setups. Es kommt zu einem Punkt, den wir nicht verbessern können es weiter materiell mit dem, was wir kontrollieren können. Im Moment, auf einem modernen PC mit 4 Kerne mit Windows XP SP3 und Delphi 2006, starten Delphi frisch und machen eine vollständige Build, dauert es 40 Sekunden. Dann, wenn wir einen anderen vollen Build in der gleichen Delphi-Session sofort tun, dauert es 1m 40s. Machen Sie eine weitere volle Build wieder, wird es noch schlimmer. Und so weiter und so fort. (Wir sind gut bewusst, Windows selbst Caches-Dateien und dies hat einen großen Einfluss auf die Kompilierung Geschwindigkeit. Die oben genannten Zahlen basieren auf, dass die Dateien zwischengespeichert werden. Wir richten ein solches Szenario, indem Sie Delphi, um das Projekt einmal zu kompilieren, beenden und dann Starten einer neuen Delphi-Sitzung. Während 40 secs nicht zu langsam sein, seine nur, weil die Dateien von Windows zwischengespeichert werden. Und wir tun dies, um einen Apfel-Apfel-Vergleich haben.) Was uns puzzles ist, warum die Zusammenstellung Geschwindigkeit wird noch schlimmer. (Wir haben in der Vergangenheit beobachtet, dass die Verlangsamung schlimmer war, wenn das Projekt eine Menge Einheit kreisförmige Referenzierung hatte.) Wenn wir Delphi beenden und eine neue Sitzung starten, wird die Kompilierungszeit wieder auf 40 Sek. Eine noch interessantere Sache, die wir beobachtet haben, ist, dass wir die gleiche Geschwindigkeitsverbesserung erreichen können, indem wir auf die Schaltfläche Abbrechen klicken, um die Kompilierung abzubrechen und dann den vollen Build sofort durchzuführen. Compilation Zeit wird wieder auf 40secs zu bekommen. Es scheint uns Delphis eigenen Cache der Einheit Abhängigkeit ist nicht so effizient wie Gebäude es von Grund auf neu und es wird immer schlimmer im Laufe der Zeit. Und es scheint auch die Abbrechen-Schaltfläche irgendwie löscht diesen Cache. Was wir denken, ist, wenn wir in das Delphi IDE-Subsystem, das diese Clearing tippt tippen können, können wir immer die Kompiliergeschwindigkeit zu seiner Spitzenleistung halten. Aber wir wissen nicht wie. Wer weiß, was wir tun können Wir sind immer noch mit Delphi 2006 als wir havent noch eine Möglichkeit gefunden, um unser großes Projekt zu Unicode Port. Ich habe auf Foren, dass die neuesten Delphi XE zeigt ähnliche Kompilierung Geschwindigkeit Problem mit Einheit kreisförmige Referenzierung. Jedermann weiß, wenn Delphi XE das Problem p. s. Wir sind uns auch bewusst, dass die Aufteilung des Projekts in Laufzeitpakete die Kompilierungszeit verkürzen kann. Für Implementierungs - und Verwaltungsgründe wird jedoch vermieden, Laufzeitpakete zu verwenden. David Ich habe diese z. B. Wenn ich den VCL-Quellcode hackte, für synopse. infoforumviewforum. phpid6 Der Compiler pflegt einen internen Cache für den dcus. Für den VCL-Teil, wenn Sie die VCL-Quelle ändern, müssen Sie beenden, dann geben Sie die IDE, um die Änderung nehmen bei der nächsten Erstellung Rechnung. Aber dies würde vielleicht lösen das OP-Problem, da es scheint, ein Leistungsproblem innerhalb der gleichen IDE-Sitzung. Da es für mich als Ersatz für IDE quitrestart arbeitete, könnte es das gleiche für John sein. Ndash Arnaud Bouchez Jul 5 11 at 9:09 1 für die Solid-State-Festplatte. I39m eine neue Maschine I39ve gebaut mit 300G Crucial SSD und 1TB WD HD unter W7 64-Bit. Alle arbeitenden Delphi-Projekte befinden sich auf der SSD. 1 Million Zeilen Code baut erstmals in D7 und XE bei 11s, beim zweiten Mal bei 8s. SSD Übertragungsrate ist 200-300 MBs gegen die 1TB disk39s 40 Bs-ish. Ndash Brian Frost Betrachten Sie den Bau mit Runtime-Pakete im Haus, dann den Bau monolithischen ausführbaren Dateien beim Senden von Code zu einer QA-Abteilung oder die Verteilung Ihrer Anwendung. Dies erfordert zusätzliche Wartung, aber die dramatischen Anstiege der Bauzeiten lohnt sich IMO. Wir haben ein 2.4 MLOC Projekt mit ca. 40-50 kleineren, unterstützenden Applikationen. Wenn es zu einer Gruppe von Laufzeitpaketen kompiliert wird, baut das Projekt in etwa 500K-Zeilen auf und baut etwa 6 mal schneller (15 Sekunden vs. 90 Sekunden). Viele der kleineren Anwendungen kompilieren in einer Sekunde oder weniger, weil so viel von dem verpackten Code geteilt wird. Sie müssen sicher sein, die monolithische ausführbare Datei, nicht die verpackte ausführbare Datei zu testen. Aber im Allgemeinen sollten Sie nicht zu viele Verhaltensunterschiede sehen, wenn Sie gute Codierungspraktiken folgen. Beantwortet Jul 5 11 at 22:24 Das ist verständlich und ich stimme zu. Es ist besonders schwierig, duale Zusammenstellungen beizubehalten. Build-Konfigurationen helfen viel. Es gibt einen anderen potenziellen Nutzen, den ich didn39t erwähnt, bevor: weil Pakete nicht rekursiv aufeinander abhängen können, verpackte Bauten erzwingen gute Software-Schichtung. Z. B. Low-Level-Code kann nicht statisch mit übergeordneten Code verknüpft werden. Das allein ist Grund, zumindest Code in Laufzeitpakete zu organisieren. Ndash David Robb Jul 6 11 um 15:30 Uhr
No comments:
Post a Comment