![]() |
AW: TTreeView komige Speedprobleme...
Zitat:
Ich hätte auf Kaspersky getippt. Aber der ist das nicht. |
AW: TTreeView komige Speedprobleme...
Sachte - erstmal ´nen Tee:
Du gibtst eine VM Zeit an von 17s und eine VM-Host-Zeit von knapp 1 min an und fragst danach was das Füllen so verlangsamt. Wenn die VM schneller läuft alsder VM-Host, dann ist das kein TreeView Problem. Deutet auf ein heftiges Systemproblem, Prozesse, Treiber, Hardware, hin (oder Zahlentausch). Du hast selbst geschreiben, dass Du das eventuell neu aufsetzen willst (gute Idee). Die technsichen Macken, aus #18, schlagen zum Teil auch beim Caching zu und dann sind Hardwareproblem auch da die Ursache, wenn es nur aus der StringList kommt. Würde zum Speedtest den Treeview in einer For-Next-Schleife mit dem gleichen String füllen. Mein Fazit: - Wenn die Zahlen aus #1 stimmen ist, solltest Du das System neu aufsetzen. - klären was wirklich angezeigt werden muß. - VirtualTreeView nehmen Schönen Sonntag noch! |
AW: TTreeView komige Speedprobleme...
Ich habe mal zum Vergleich eine ListBox getestet und war doch einigermaßen erstaunt, daß das TreeView (ohne Images) genaus so schnell ist wie diese. Scheint ein Aberglaube zu sein, daß TreeView stinklangsam ist. Auf jeden Fall auch viel schneller als ein Memo, aber das denke ich, ist klar.
Delphi-Quellcode:
procedure GetDirs(const Start: String; const SL: TStrings);
var S: TSearchRec; P: string; R: integer; begin R:= FindFirst(Start+'*.*', faDirectory, S); while R = 0 do begin if ((S.Attr and faDirectory) <> 0) then if ((S.Name <> '.') and (S.Name <> '..')) then begin P:= Start+S.Name+'\'; SL.Add(P); GetDirs(P, SL); end; R:= FindNext(S); end; Findclose(S); end; procedure GetNodeDirs(const ADirectory: String; var ATree: TTreeView; const Start: TTreeNode); function SlashSep(const Path, S: String): String; begin if AnsiLastChar(Path)^ <> '\' then Result:= Path+'\'+S else Result:= Path+S; end; var S: TSearchRec; N: TTreeNode; R: integer; begin R:= FindFirst(SlashSep(ADirectory, '*.*'), faDirectory, S); while R = 0 do begin if ((S.Attr and faDirectory) <> 0) then if ((S.Name <> '.') and (S.Name <> '..')) then begin N:= ATree.Items.AddChild(Start, S.Name); GetNodeDirs(SlashSep(ADirectory, S.Name), ATree, N); end; R:= FindNext(S); end; Findclose(S); end; procedure TForm1.Button1Click(Sender: TObject); // ListBox var fPath: string; fTime: Cardinal; begin fPath:= 'C:\'; ListBox1.Items.Clear; fTime:= GetTickCount; ListBox1.Items.BeginUpdate; GetDirs(fPath, ListBox1.Items); ListBox1.Items.EndUpdate; Label1.Caption:= IntToStr(GetTickCount-fTime); end; procedure TForm1.Button2Click(Sender: TObject); // TreeView var fPath: string; fTime: Cardinal; begin fPath:= 'C:\'; TreeView1.Items.Clear; fTime:= GetTickCount; TreeView1.Items.BeginUpDate; GetNodeDirs(fPath, TreeView1, TreeView1.Items.AddChild(Nil, fPath)); TreeView1.Items.EndUpDate; Label2.Caption:= IntToStr(GetTickCount-fTime); end; procedure TForm1.Button3Click(Sender: TObject); // StringList var fPath: string; fTime: Cardinal; SL: TStringList; begin fPath:= 'C:\'; SL:= TStringList.Create; fTime:= GetTickCount; GetDirs(fPath, SL); Label3.Caption:= IntToStr(GetTickCount-fTime)+' ('+IntToStr(SL.Count)+')'; SL.Free; end; |
AW: TTreeView komige Speedprobleme...
Sobald man bei Delphi mehrere Einträge für ne TreeView hat, sollte man lieber auf die Alternative VirtualTreeview wechseln. Keine Ahnung wie sie im Vergleich zu anderen Standard-Delphi Komponenten steht, jedoch ist sie im Vergleich zu der VirtualTreeview Alternative deutlich langsamer.
Das hatte ich ja schon bei meiner eigenen TTreeview-Dropdown-Komponente gemerkt (welche auf TTreeview basiert) dass es da relativ schnell zu Performance Einbußen kommt. Falls du wirklich die Ursache herausfinden willst kannste ja mal alles nach und nach von deinem Rechner werfen *g* MfG Alaitoc Edith sagt: Ebenfalls einen schönen Sonntag ;) |
AW: TTreeView komige Speedprobleme...
Auch wenn der Thread jetzt vielleicht "vorbei" ist möchte ich noch meine Meinung schreiben. Ersteinmal muss ich mschaefer beipflichten - wenn etwas auf ein und dem selben PC in der VM schneller läuft, als auf der realen Hardware, kann irgendetwas nicht stimmen. Vielleicht wirklich neu aufsetzen.
Dazu kommt noch, dass ich das TTreeView nur bei Dingen einsetze, die nur wenige Einträge haben. Es ist nicht nur langsam, teilweise gibt es auch ein lustiges Flackern, wenn man die Maus über die Einträge bewegt. Ab und an verschwinden auch die Header (Spalten-Überschriften). TTreeView benutze ich selber nur für Darstellungen, die wenige Einträge haben und nicht die ganze Zeit sichtbar sind (wegen den Flackereffekten - z.B. nutze ich TTreeView/TListView in Einstellungsfenstern) - ansonsten setze ich an allen anderen Stellen auf TVirtualTreeView, das ist einfach DIE Komponente, um Listen oder Bäume darzustellen. Man muss sich zwar etwas einarbeiten, aber dafür bietet die Komponente fast unzählbare Möglichkeiten. Danke, Herr Mike Lischke! |
AW: TTreeView komige Speedprobleme...
Hallo,
vielleicht hast du schon eine Lösung des Problems, dennoch habe ich ein zwei Anmerkungen, die ich hier auch noch anbringen möchte: - Deine VM hat u.U. nicht die selbe Anzahl an Items wie Dein Hostsystem. Zitat:
Bezogen auf Deine Frage, warum es langsamer ist auf System A zu B würde ich somit das naheliegenste Wählen: Ich denke tatsächlich, dass der Geschwindigkeitsunterschied daher kommt, dass die gesamte Anzahl an Items sich in Host und VM unterscheiden. Gruß, Chris BTW: Zitat:
|
AW: TTreeView komige Speedprobleme...
Zitat:
Zitat:
|
AW: TTreeView komige Speedprobleme...
Hmm, ich fang einfach mal der reihe nach zu antworten.
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Leider muss ich auch dich auf Post #6 verweisen. Nochmal, es ging im grunde "nur" um die frage ob sowas schonmal jemand hatte. Warum ich hier in dem Forum frage, und nicht woanders? Weil ich dachte, hier braucht man nicht zu erklären was ein TTreeView ist, und was der macht. In Delphifragen wurde mir hier auch immer sehr nett und schnell geholfen. Auch wenn es mal eine "dumme" frage war, weil ich den Wald vor lauter Bäumen nicht sah. Trotzdem danke ich allen die versucht haben zu helfen. :thumb: Auch wenn das eigentliche Thema verfehlt wurde. Sowas kann einfach passieren. Wir sind alle "nur" menschen. |
AW: TTreeView komige Speedprobleme...
Zitat:
Zitat:
In einer Sache stimme ich Dir aber dennoch voll und ganz zu Zitat:
|
AW: TTreeView komige Speedprobleme...
Zitat:
Das das hier soooo schief gelaufen ist, nehme ich keinem übel. Ich glaube das habe ich in meinem letzten Post deutlich zum ausdruck gebracht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:38 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