Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Code-Vervollständigung sehr langsam (D7) (https://www.delphipraxis.net/147130-code-vervollstaendigung-sehr-langsam-d7.html)

MatthiasR 2. Feb 2010 10:50


Code-Vervollständigung sehr langsam (D7)
 
Ich benutze Delphi 7 und habe das Problem, dass IDE-Features wie die Code-Vervollständigung oder die Anzeige der Code-Parameter bei Methodenaufrufen unheimlich langsam reagieren. Das ganze ist aber nur in unserem Hauptprojekt (entsprechend groß) so dramatisch, nicht in kleineren Projekten. Und im Hauptprojekt auch nur in Units, die gewisse andere selbstgeschriebene Units verwenden. Erzeuge ich in unserem Hauptprojekt bspw. ein neues Formular und verwende darin keinerlei andere unserer eigenen Units, so ist die Code-Vervollständigung darin richtig flott. Es muss also an irgendeiner (oder mehrerer) eigenen Unit liegen, die den Aufbau der Code-Vervollständigung dermaßen verlangsamt.

Jetzt ist nur die Frage welche Unit(s) und warum gerade diese die IDE so dermaßen ausbremsen. An der bloßen Größe der Units kann es eigentlich nicht liegen, oder? Schließlich bindet Delphi ja beim Anlegen eines neuen Formulars eine ganze Reihe Delphi-interner Units ein, die allesamt ebenfalls sehr umfangreich sind:
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
Trotzdem ist und bleibt die Code-Vervollständigung pfeilschnell, obwohl sie in dieser Ausgangssituation bestimmt bereits tausende von Klassen, Methoden, Variablen und Konstanten zu "verwalten" hat. Kommen ein paar eigene Units hinzu, so verlangsamt sich das ganze jedoch um mehrere Sekunden (vorher ja nur Bruchteile einer Sekunde).

Was ich mir vorstellen könnte, ist, dass es in den eigenen Units irgendwelche unschönen Konstrukte gibt, die die IDE so dermaßen verlangsamen. Also bspw. irgendwelchen zirkulären Bezüge oder sonst etwas. Also dass Unit A die Unit B verwendet und umgekehrt. Kann das sein? Solche Stellen gibt es leider Gottes, ich könnte den Verursacher dafür auch steinigen :twisted:

Habt ihr gerade bei Delphi 7 auch schon ähnliche Erfahrungen gemacht und wie konntet ihr sie lösen? Oder muss ich mich damit abfinden?

Danke für eure Hilfe!

hoika 2. Feb 2010 10:56

Re: Code-Vervollständigung sehr langsam (D7)
 
Hallo,

habe das gleiche Problem.
Ich habe das von automatisch auf manuell gestellt.


Heiko

himitsu 2. Feb 2010 11:00

Re: Code-Vervollständigung sehr langsam (D7)
 
zwei einfache Tipps/Tricks:
- schaltet ErrorInsign ab
- nutzt Hier im Forum suchenDelphiSpeedUp

Ersteres funktioniert eh nie richtig und bremst nur aus, bzw. sorgt durch falschanzeige von Fehlern für Verwirrungen.

Letzeres tauscht einige Funktionen in der IDE aus (die kompilierten Programme bleiben unberührt)
z.B. den Speichermanager (gegen FastMM) und viele langsame Stringfunktionen.

MatthiasR 2. Feb 2010 11:06

Re: Code-Vervollständigung sehr langsam (D7)
 
Zitat:

Zitat von hoika
habe das gleiche Problem.
Ich habe das von automatisch auf manuell gestellt.

Wo macht man das und hat es was gebracht?

Zitat:

Zitat von himitsu
- schaltet ErrorInsign ab
- nutzt Hier im Forum suchenDelphiSpeedUp

Wo macht man das in D7 bzw. gibt es das da schon (EDIT: Nein, erst ab D2005)?!? DelphiSpeedUp hatte ich vorhin mal installiert, brachte keine Besserung.

Ist es denn nicht verwunderlich, dass die Probleme nur auftauchen, wenn ich ein paar unserer eigenen Units verwendet und NICHT bei Unmengen Delphi-Units?!? Irgendwas muss doch dann bei unseren eigenen Units falsch laufen?!?

himitsu 2. Feb 2010 11:20

Re: Code-Vervollständigung sehr langsam (D7)
 
Bei den DelphiUnits nutzt Delphi eigentlich nur die vorkompilierten DCUs ... zu den Sourcen gibt es nur eine Umleitung für's Debugging und Dergleichen.
Da muß Delphi also nicht viel parsen, um den Aufbau der Units zu kennen.

Hmmm, ganz ehrlich, ich weiß garnicht, dann dieses eingeführt wurde ... hab bei sowas abgestellt, ich dachte aber D7 hätte da auch schon was zu bieten ... nja, konnte aber grade auch nichts zum aktivieren derartiger Funktionen finden :oops:


Bei sowas wäre auch noch eine Idee zu versuchen über die Open Tools API sich an einigen Stellen einzuklinken (wenn swas denn geht) und einige Zeiten zu messen, um so vielleicht rauszubekommen, wo es denn "hängt"

nahpets 2. Feb 2010 11:24

Re: Code-Vervollständigung sehr langsam (D7)
 
Hallo,

das Problem kenne ich.

Es tritt immer dann auf, wenn ich ein großes Projekt öffne und dann erstmals auf die Codevervollständigung "warte".
Mir scheint, dass Delphi dann hergeht und erstmal alles an Quelltexten "durcharbeitet" um an die für die Codevervollständigung erforderlichen Informationen zu kommen.

Wenn ich Delphi richtig beobachtet habe, kompiliert es im Hintergrund alle eigenen Units (sprich: nicht die zu Delphi gehörenden) um die Informationen zur Codevervollständigung zu sammeln, es muss halt alle Quelltexte einmal parsen.
Danach bekommt es Änderungen "von allein" mit.

Bei mir hilft es, bevor ich das erste Mal die Codeversollständigung benutze, das Projekt zu compilieren. Dann kommt Delphi "zwangsweise" überall mal vorbei und kann die Informationen sammeln.

Danach geht's dann gewohnt schnell.

MatthiasR 2. Feb 2010 11:29

Re: Code-Vervollständigung sehr langsam (D7)
 
Zitat:

Zitat von nahpets
Hallo,

das Problem kenne ich.

Es tritt immer dann auf, wenn ich ein großes Projekt öffne und dann erstmals auf die Codevervollständigung "warte".
Mir scheint, dass Delphi dann hergeht und erstmal alles an Quelltexten "durcharbeitet" um an die für die Codevervollständigung erforderlichen Informationen zu kommen.

Wenn ich Delphi richtig beobachtet habe, kompiliert es im Hintergrund alle eigenen Units (sprich: nicht die zu Delphi gehörenden) um die Informationen zur Codevervollständigung zu sammeln, es muss halt alle Quelltexte einmal parsen.
Danach bekommt es Änderungen "von allein" mit.

Bei mir hilft es, bevor ich das erste Mal die Codeversollständigung benutze, das Projekt zu compilieren. Dann kommt Delphi "zwangsweise" überall mal vorbei und kann die Informationen sammeln.

Danach geht's dann gewohnt schnell.

Dass Delphi beim ersten Aufruf der Code-Vervollständigung immer etwas länger braucht, ist mir auch schon aufgefallen. Jedoch wäre das alleine ja überhaupt kein Problem. Danach funktioniert es ja in der Regel viel schneller. Nur bei meiner Konstellation nicht. Da kommt es mir so vor, als ob die IDE die benötigten Infos jedes mal aufs Neue erzeugen muss, sodass es immer gleich lange dauert (mehrere Sekunden).

Trotzdem probiere ich deinen Tipp jetzt mal aus, zu aller erst mal das Projekt komplett zu Compilieren. Aber große Hoffnungen habe ich nicht... :|

nahpets 2. Feb 2010 11:36

Re: Code-Vervollständigung sehr langsam (D7)
 
Hallo,

mehrere Sekunden geht doch, da hab' ich auch schon mal 'ne Minute und länger gewartet (okay, war jetzt nicht unbedingt ein schneller Rechner).

MatthiasR 2. Feb 2010 11:41

Re: Code-Vervollständigung sehr langsam (D7)
 
Zitat:

Zitat von nahpets
mehrere Sekunden geht doch, da hab' ich auch schon mal 'ne Minute und länger gewartet (okay, war jetzt nicht unbedingt ein schneller Rechner).

Ist nur so, dass ich das Feature alle paar Sekunden verwende beim Programmieren, um mir Schreibarbeit und potenzielle Verschreiber zu ersparen. Und dann summieren sich die paar Sekunden schnell.

Das Vorcompilieren scheint übrigens in der Tat ein bisschen was gebracht zu haben. Die Verzögerungen sind nicht mehr ganz so extrem. Aber für meine Begriffe immernoch zu lang. V.a. auf einem hochmodernen Entwicklungsrechner (Core2Quad mit 2,66 GHz und 4 GB RAM). Ich bin mal gespannt, ob das nun so bleibt, oder ob sich die Verzögerungen im Laufe der Zeit wieder in die Höhe schrauben.

nahpets 2. Feb 2010 11:54

Re: Code-Vervollständigung sehr langsam (D7)
 
Hallo,
Zitat:

Zitat von MatthiasR
Zitat:

Zitat von nahpets
mehrere Sekunden geht doch, da hab' ich auch schon mal 'ne Minute und länger gewartet (okay, war jetzt nicht unbedingt ein schneller Rechner).

Ist nur so, dass ich das Feature alle paar Sekunden verwende beim Programmieren, um mir Schreibarbeit und potenzielle Verschreiber zu ersparen. Und dann summieren sich die paar Sekunden schnell.

Das Vorcompilieren scheint übrigens in der Tat ein bisschen was gebracht zu haben. Die Verzögerungen sind nicht mehr ganz so extrem. Aber für meine Begriffe immernoch zu lang. V.a. auf einem hochmodernen Entwicklungsrechner (Core2Quad mit 2,66 GHz und 4 GB RAM). Ich bin mal gespannt, ob das nun so bleibt, oder ob sich die Verzögerungen im Laufe der Zeit wieder in die Höhe schrauben.

Das mit dem Ersparen der Schreibarbeit habe ich mir abgewöhnt, da immer zu warten ist nervig, da schreib' ich lieber schneller, als Delphi vervollständigt und beim Kompilieren findet es die Verschreiber zuverlässig. Okay, wenn ich mal wieder nicht weiß, welche Parameter eine Funktion oder Prozedure in welcher Reihenfolge benötigt, dann warte ich auch mal. Oder bis man alle Attribute einer Klasse angezeigt bekommt, kann schon mal dauern, geht dann aber bei der gleichen Klasse zukünftig auch recht zügig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 Uhr.
Seite 1 von 3  1 23      

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