AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE 10.4 Sydney IDEFixpack kommt da noch was ?
Thema durchsuchen
Ansicht
Themen-Optionen

10.4 Sydney IDEFixpack kommt da noch was ?

Ein Thema von Borni · begonnen am 1. Sep 2020 · letzter Beitrag vom 28. Okt 2020
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#1

AW: 10.4 Sydney IDEFixpack kommt da noch was ?

  Alt 2. Okt 2020, 16:01
Wir kompilieren ca. 2 Mio Zeilen mit 10.4.1 in ca. 45 Sekunden.
Als "eine" EXE ginge es bei uns auch schneller (vor Jahren im XE mal ausprobiert),
aber wir kompilieren hier auch ein paar Fremdkomponenten und unser Code ist auf etwa 80 DLL/BPL/EXE verteilt.
Da geht alleine schon mehr Zeit drauf, da es "viele" Einzelprojekte sind, wo sich fast überall auch noch Eurekalog ins Kompilieren reinhängt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Der Bastler

Registriert seit: 14. Jan 2014
4 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: 10.4 Sydney IDEFixpack kommt da noch was ?

  Alt 8. Okt 2020, 16:34
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
Angehängte Grafiken
Dateityp: jpg UsesSorter.jpg (67,2 KB, 30x aufgerufen)
Lars

Geändert von Der Bastler ( 9. Okt 2020 um 07:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.667 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: 10.4 Sydney IDEFixpack kommt da noch was ?

  Alt 8. Okt 2020, 18:29
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 WENIGSTEN 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.
D.h. das Tool ändert nur die Reihenfolge der Units in Uses-Liste der .DPR-Datei?

Darauf muss man erstmal kommen, ist aber definitiv plausibel.
Thomas Mueller
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#4

AW: 10.4 Sydney IDEFixpack kommt da noch was ?

  Alt 8. Okt 2020, 18:43
@Der Bastler

Habt Ihr mal den FileMon / ProcessExplorer mitloggen lassen, worauf Delphi beim Kompilieren zugreift, wie und wo es sich 'nen Wolf sucht?

Da sieht man dann auch alle Dateizugriffe, die ins Leere laufen, weil die gesuchte Datei an der Stelle nicht gefunden wurde und dann der Suchpfad der Reihe nach durchgegangen wird. Das kann ganz schön viel werden.

Deshalb: Suchpfade auf das wirklich erforderliche reduzieren.

Wir hatten das Thema vor einiger Zeit schonmal, eventuell hilft das weiter: https://www.delphipraxis.net/1425517-post24.html bzw. https://www.delphipraxis.net/199685-...en-finden.html
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.029 Beiträge
 
Delphi 12 Athens
 
#5

AW: 10.4 Sydney IDEFixpack kommt da noch was ?

  Alt 8. Okt 2020, 19:44
Die Integration weitere Teile des Fixpacks ist m.W. am Laufen...
Geht halt nur nicht auf einmal, da das nicht 1:1 übernommen werden kann/sollte.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: 10.4 Sydney IDEFixpack kommt da noch was ?

  Alt 8. Okt 2020, 20:00
Die Integration weitere Teile des Fixpacks ist m.W. am Laufen...
Geht halt nur nicht auf einmal, da das nicht 1:1 übernommen werden kann/sollte.
Was man recht "schnell" machen könnte, wären die Einführung von HashTables als Ersatz oder als Cache für die vielen LinkedLists im Compiler. Aber bitte nicht wieder so wie bei XE2, wo HashTable eingeführt wurden, die mehr Zeit mit dem HashTable-Overhead verbringen, als mit den eigentlichen Daten. Man muss nicht Speicher reservieren und durch die Gegend kopieren, wenn man einen Eintrag sucht.

Dann gibt es noch die Einzel-Funktions-Beschleunigungen, bei denen einzelne Funktionen durch schnellere ersetzt wurden oder die für den Fall, der am meisten Eintritt, optimiert weurden. Die lassen sich (theoretisch) sogar Unittesten.

Auch recht "einfach" lassen sich die "Invarianten Code aus Schleifen entfernen" Patches umsetzen. Das macht vor allem den WIn64 Compiler einen Ticken schneller.


Kompliziert wird es bei den IDEFixPack Patches, die algorithmische Änderungen durchführen oder die Funktionsübergreifend arbeiten (in einer Funktion Informationen sammeln und in einer späteren Funktion diese nuten).
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: 10.4 Sydney IDEFixpack kommt da noch was ?

  Alt 8. Okt 2020, 21:09
@Der Bastler

Habt Ihr mal den FileMon / ProcessExplorer mitloggen lassen, worauf Delphi beim Kompilieren zugreift, wie und wo es sich 'nen Wolf sucht?

Da sieht man dann auch alle Dateizugriffe, die ins Leere laufen, weil die gesuchte Datei an der Stelle nicht gefunden wurde und dann der Suchpfad der Reihe nach durchgegangen wird. Das kann ganz schön viel werden.

Deshalb: Suchpfade auf das wirklich erforderliche reduzieren.

Wir hatten das Thema vor einiger Zeit schonmal, eventuell hilft das weiter: https://www.delphipraxis.net/1425517-post24.html bzw. https://www.delphipraxis.net/199685-...en-finden.html
Aber Vorsicht vor "Pfade bereinigen" (oder wie das hieß).
Früher hat das jedenfalls mal Delphi lahm gelegt...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#8

AW: 10.4 Sydney IDEFixpack kommt da noch was ?

  Alt 8. Okt 2020, 21:27
Im FileMon kann man gut sehen, wo Dateien gesucht werden und wo sie gefunden werden.

Wenn nun in den Pfaden Verzeichnisse sind, in denen grundsätzlich nichts gefunden wird, kann man die schon bereinigen.

Die Verzeichnisse, in denen Delphi "sein eigenes Zeug" findet. lässt man natürlich in den Suchpfaden drinne, auch wenn bei einem Projekt konkret eventuell mal nix von dort benötigt wird.

Und:
Unter Pfade bereinigen meine ich eine menschliche, individuelle Bereinigung, nicht die, die die IDE selbst anbietet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#9

AW: 10.4 Sydney IDEFixpack kommt da noch was ?

  Alt 8. Okt 2020, 22:25
Beim Pfad-Bereinigen gab es das Problem, dass Pfade mit Variablen gelöscht wurden, weil die Variablen nicht durch Platzhalter ersetzt und erst damit dann gesucht wird.

Das betrifft z.B. die Platform/Compiler-abhängigen Pfade.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Der Bastler

Registriert seit: 14. Jan 2014
4 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: 10.4 Sydney IDEFixpack kommt da noch was ?

  Alt 9. Okt 2020, 07:09
@Der Bastler

Habt Ihr mal den FileMon / ProcessExplorer mitloggen lassen, worauf Delphi beim Kompilieren zugreift, wie und wo es sich 'nen Wolf sucht?

Da sieht man dann auch alle Dateizugriffe, die ins Leere laufen, weil die gesuchte Datei an der Stelle nicht gefunden wurde und dann der Suchpfad der Reihe nach durchgegangen wird. Das kann ganz schön viel werden.

Deshalb: Suchpfade auf das wirklich erforderliche reduzieren.

Wir hatten das Thema vor einiger Zeit schonmal, eventuell hilft das weiter: https://www.delphipraxis.net/1425517-post24.html bzw. https://www.delphipraxis.net/199685-...en-finden.html
Ja. Keine Units, die nicht verwendet werden, einbinden. Das kann man mit diversen Tools herausfinden (z.B. mit ICARUS; der sagt auch, welche Units von "interface" nach "implementation" geschoben werden können).
Lars

Geändert von Der Bastler ( 9. Okt 2020 um 08:58 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 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 by Thomas Breitkreuz