![]() |
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:
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).
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; 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! |
Re: Code-Vervollständigung sehr langsam (D7)
Hallo,
habe das gleiche Problem. Ich habe das von automatisch auf manuell gestellt. Heiko |
Re: Code-Vervollständigung sehr langsam (D7)
zwei einfache Tipps/Tricks:
- schaltet ErrorInsign ab - nutzt ![]() 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. |
Re: Code-Vervollständigung sehr langsam (D7)
Zitat:
Zitat:
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?!? |
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" |
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. |
Re: Code-Vervollständigung sehr langsam (D7)
Zitat:
Trotzdem probiere ich deinen Tipp jetzt mal aus, zu aller erst mal das Projekt komplett zu Compilieren. Aber große Hoffnungen habe ich nicht... :| |
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). |
Re: Code-Vervollständigung sehr langsam (D7)
Zitat:
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. |
Re: Code-Vervollständigung sehr langsam (D7)
Hallo,
Zitat:
|
Re: Code-Vervollständigung sehr langsam (D7)
Intern läuft da sowas wie ein Compilevorgang, damit die Codevervollständigung geht. Also muss das Compilieren beschleunigt werden. Hilfreich ist da in den Projektoptionen die Compilermeldungen für unsichere Typen, Code und Typumwandlungen abzuschalten.
Sherlock |
Re: Code-Vervollständigung sehr langsam (D7)
Hallo,
Zitat:
|
Re: Code-Vervollständigung sehr langsam (D7)
Zitat:
|
Re: Code-Vervollständigung sehr langsam (D7)
Wobei das eigentliche Problem nicht ist, dass die Code-Vervollständigung so lange dauert, denn darauf habe ich ja einen Einfluss (indem ich sie halt selten benutze). Vielmehr stört mich, dass sich die IDE des öfteren ein paar "Gedenksekunden" genehmigt, auch wenn ich nur mit dem Cursor an irgendeine stelle im Quellcode springe. Ergebnis: 2-3 Sekunden lang nur die Sanduhr, erst dann gehts weiter. Was macht Delphi da im Hintergrund und wie kann ich das abstellen?
|
Re: Code-Vervollständigung sehr langsam (D7)
Hallo,
Zitat:
Eventuell stellst Du mal in den Optionen die Verzögerungszeit für Code-Insight etwas höher, so dass nicht schon eine Pause von 'ner halben Sekunde (oder weniger) beim Überfahren dafür sorgt, dass Code-Insight aktive wird. |
Re: Code-Vervollständigung sehr langsam (D7)
Zitat:
Kann es eigentlich sein, dass die Reihenfolge, in der andere Units eingebunden werden, ebenfalls zu Verzögerungen bei der Code-Vervollständigung führen kann? Ich komme darauf, weil ich hier gerade mit zwei Units teste, die beide die gleichen Units verwenden. Die eine Unit verwendet allerdings noch ein paar weitere Units, die die andere Unit nicht verwendet. Kurioserweise dauert der Aufbau der Code-Vervollständigung trotzdem bei der zweiten Unit länger, als bei der ersten, obwohl die IDE da ja weniger Dateien aufzuarbeiten hat. |
Re: Code-Vervollständigung sehr langsam (D7)
Hallo,
wie Delphi da nun vorgeht, kann ich nicht sagen, kenne halt meine "Spezial"-Projekte, bei denen ich warten muss, die werden nach dem Öffnen erstmal kompiliert und die Maus wird so gestellt, dass sie beim Schreiben und/oder Blättern über Tastatur, nicht ausversehen über dem Quelltext steht und eine kleine Pause von 'ne Sekunde Delphi zum Hervorgraben der Hinweise... veranlasst. Eine sinnvolle Lösung zu dem Problem kann ich nicht liefern, nur so meine Erfahrungen, um damit umzugehen. |
Re: Code-Vervollständigung sehr langsam (D7)
Zitat:
|
AW: Code-Vervollständigung sehr langsam (D7)
Sorry für das ausgraben dieses alten Threads. Für die Nachwelt:
Der Tip hier hat mir scheinbar geholfen: ![]() Und zwar habe ich sowohl bei den Projektoptionen - Verzeichnisse/Bedingungen - Suchpfad wie auch bei Tools - Optionen - Umgebungsoptionen - Delphi-Optionen - Bibliothek-Win32 - Bibliothekspfad "Ungültige Pfade löschen" angeklickt - seitdem läuft es (aktuell) einwandfrei, und ich bin z.B. bei der Code-Vervollständigung von ca. 25 Sekunden runter auf ~2 Sekunden maximal. |
AW: Code-Vervollständigung sehr langsam (D7)
Vorsicht unter XE3.
Da wird u.U. ein benötigter Pfad gelöscht, wodurch die Projekte nicht mehr kompiliert werden konnten. (Gab irgendwas dazu mal in der DP.) |
AW: Code-Vervollständigung sehr langsam (D7)
Ja, man darf die Pfade NICHT löschen, die bestimmte Variablen (PLATFORM etc.) enthalten da die immer grau dargestellt werden.
|
AW: Code-Vervollständigung sehr langsam (D7)
Zudem hat XE2 Compiler einen
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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