AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TTreeView komige Speedprobleme...

Ein Thema von DelTurbo · begonnen am 26. Aug 2011 · letzter Beitrag vom 10. Sep 2011
Antwort Antwort
Seite 3 von 4     123 4   
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Troisdorf
1.079 Beiträge
 
Delphi 2007 Architect
 
#21

AW: TTreeView komige Speedprobleme...

  Alt 28. Aug 2011, 13:59
wie vll. sogar Servicepacks oder sonstige Updates, wer weiß?
Genau darum geht es. Ich dachte das sowas schonmal einer hatte. Dann hätte ich gezielt suchen können. Es hat ja im grunde nichts mit dem eigentlichen TreeView zu tun. Es ist mir da halt nur aufgefallen. Es kann ja sein das noch andere sachen betroffen sind.

Ich hätte auf Kaspersky getippt. Aber der ist das nicht.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.026 Beiträge
 
Delphi XE3 Enterprise
 
#22

AW: TTreeView komige Speedprobleme...

  Alt 28. Aug 2011, 14:06
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!
Martin Schaefer
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.380 Beiträge
 
Delphi 10.4 Sydney
 
#23

AW: TTreeView komige Speedprobleme...

  Alt 28. Aug 2011, 14:08
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;
  Mit Zitat antworten Zitat
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#24

AW: TTreeView komige Speedprobleme...

  Alt 28. Aug 2011, 14:14
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

Geändert von Alaitoc (28. Aug 2011 um 14:15 Uhr) Grund: Nachtrag
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#25

AW: TTreeView komige Speedprobleme...

  Alt 28. Aug 2011, 16:19
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!
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"

Geändert von wicht (28. Aug 2011 um 16:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#26

AW: TTreeView komige Speedprobleme...

  Alt 29. Aug 2011, 09:59
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.

Wobei ich denke das es egal ist ob ich 10.000 oder 100.000 Items hinzufüge
- Es dauert sehr wohl länger 100.000 Einträge zu erzeugen gegenüber 10.000 (nämlich im einfachsten Fall genau um den Faktor 10) - da der Code der zum hinzufügen ausgeführt werden muss ja 10 mal häufiger durchlaufen wird.

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:
Und eigentlich sollte es doch auch egal sein wie. Da ich immer die gleiche .exe zum messen nehme. Oder irre ich mich???
Das es absolut betrachtet Egal ist wie man einfügt glaube ich nicht spricht z.B. der Unterschied mit BeginUpdate und ohne. Relativ betrachtet - sprich immer die selbe exe - hast du sicher recht. Allerdings ist hier auch die Frage, wie stark das OS "Programmiereigenarten" kappselt / verbessert / verschlechtert. Ein XP geht mit machen Dingen sehr wohl anders um als z.B. ein Windows 7. Die selbe EXE kann sich dann auf zwei Systemen unterschiedlich verhalten und unterschiedliche Performance zeigen.
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#27

AW: TTreeView komige Speedprobleme...

  Alt 29. Aug 2011, 10:34
Also wenn du die Anzahl der zu erst erstellten Einträge reduzierst, solltest du auch auf dem langsamen Rechner gute Zeiten bekommen. Und warum es langsamer ist? Andere Hardware (weniger RAM, ...) oder es laufen einfach mehr Prozesse, so dass dein Prozess weniger Rechenzeit bekommt. Da kann es ein paar Gründe geben. Aber was willst du bei einem Kunden/Benutzer machen? Willst du ihm sagen, er soll Windows neu installieren und keine weiteren Programm außer deinem?

Also optimiere das ganze, so dass erst mal nur die wirklich benötigten Einträge gemacht werden und die weiteren erst bei Bedarf.
Nochmal sorry. Aber würdest du mal richtig lesen, dann würdest du feststellen das ich das auch auf der gleichen Hardware getestet habe (Post #6).
Im ersten Posting redest du aber noch von einer VM:
Zitat:
Lasse ich das in einer VMWare auf dem selben rechner laufen, ist die dauer ~17 Sekunden.
Und das ist ein zweiter Rechner. Oder hat die VM zum Beispiel genauso viel Arbeitsspeicher wie das Hostsystem? In der VM ist ein zweites Windows installiert. Ich glaube kaum, dass dieses exakt identisch ist mit der installierten Software, laufenden Diensten, Autorun-Programmen wie das Windows vom Hostsystem. Also haben wir es defakto mit zwei unterschiedlichen Rechnern zu tun und zwar was so wohl die Hardware als auch die Software angeht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Troisdorf
1.079 Beiträge
 
Delphi 2007 Architect
 
#28

AW: TTreeView komige Speedprobleme...

  Alt 29. Aug 2011, 12:22
Hmm, ich fang einfach mal der reihe nach zu antworten.

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.
Wenn du Post #6 gelesen hättest würdest du nicht sagen das es ein Hardware prob ist.

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.
Richtig. Aber nicht Hardwareseitig sondern am Windows selber. Ich wollte auch nur wissen ob das schonmal einer hatte.

- Deine VM hat u.U. nicht die selbe Anzahl an Items wie Dein Hostsystem.
Logischerweise werde immer die gleichen daten gelesen. Wie will man sowas sonst testen? Auf einem System mit 2 einträgen arbeiten, auf dem anderen mit 100.000 und dann sagen "Hui, da stimmt aber was nicht".

- Es dauert sehr wohl länger 100.000 Einträge zu erzeugen gegenüber 10.000 (nämlich im einfachsten Fall genau um den Faktor 10) - da der Code der zum hinzufügen ausgeführt werden muss ja 10 mal häufiger durchlaufen wird.
[ironie_on] Das wusste ich garnicht. [ironie_off]

Im ersten Posting redest du aber noch von einer VM:
Zitat:
Lasse ich das in einer VMWare auf dem selben rechner laufen, ist die dauer ~17 Sekunden.
Und das ist ein zweiter Rechner. Oder hat die VM zum Beispiel genauso viel Arbeitsspeicher wie das Hostsystem? In der VM ist ein zweites Windows installiert. Ich glaube kaum, dass dieses exakt identisch ist mit der installierten Software, laufenden Diensten, Autorun-Programmen wie das Windows vom Hostsystem. Also haben wir es defakto mit zwei unterschiedlichen Rechnern zu tun und zwar was so wohl die Hardware als auch die Software angeht.
Das mit der VM war ein Beispiel. Zumal eine VM langsamer ist als der Host. Jenachdem was man macht. Logischerweise. Die muss z.b. die NIC, IDE, SCSI usw. emulieren.
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.

Auch wenn das eigentliche Thema verfehlt wurde. Sowas kann einfach passieren. Wir sind alle "nur" menschen.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#29

AW: TTreeView komige Speedprobleme...

  Alt 29. Aug 2011, 12:48
- Es dauert sehr wohl länger 100.000 Einträge zu erzeugen gegenüber 10.000 (nämlich im einfachsten Fall genau um den Faktor 10) - da der Code der zum hinzufügen ausgeführt werden muss ja 10 mal häufiger durchlaufen wird.
[ironie_on] Das wusste ich garnicht. [ironie_off]
Danke dir für die Ironie - aber vielleicht sollte ich Dich auf Deine Posts verweisen: In #6 behauptests du, dass genau das egal ist. Und da du nie gepostet hast dass die Daten tatsächlich absolut Identisch sind, ist das auch nicht logisch - sondern eher eine mögliche Fehlerquelle (siehe folgenden Satz)
Logischerweise werde immer die gleichen daten gelesen. Wie will man sowas sonst testen? Auf einem System mit 2 einträgen arbeiten, auf dem anderen mit 100.000 und dann sagen "Hui, da stimmt aber was nicht".
Die "Themaverfehlung" Deiner Helfer hier hat sicher manchmal etwas mit überlesen zu tun, aber man sollte auch so weit reflektieren, ob die Helfer die vollständigen Informationen haben um helfen zu können. Niemand weiß genau was Du als Fragender als Logisch voraussetzt und was nicht. Es wird nicht versucht irgendwelche Glaskugelposts zu produzieren und Dir statt dessen zu helfen. Damit wird etwas im trüben gefischt und vielleicht tatsächlich am Thema vorbei gepsorchen - aber das ist meines Erachtens nicht ausschließlich das Versäumnis der Helfer.

In einer Sache stimme ich Dir aber dennoch voll und ganz zu
Wir sind alle "nur" menschen.
Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Troisdorf
1.079 Beiträge
 
Delphi 2007 Architect
 
#30

AW: TTreeView komige Speedprobleme...

  Alt 29. Aug 2011, 13:04
Hi,
also es sind 54.279 Items. Hinzugefügt werden sie aus diesem Post. http://www.delphipraxis.net/1118455-post9.html Ich habe den link von Lannes genommen, der mir netterweise an dieser stelle geholfen hat.

Wobei ich denke das es egal ist ob ich 10.000 oder 100.000 Items hinzufüge. Und eigentlich sollte es doch auch egal sein wie. Da ich immer die gleiche .exe zum messen nehme. Oder irre ich mich???

Wenn ich mein "SpieleSystem" boote sind die in ~14 Sek. drinn. Mehr als 4x so schnell. Und das mit der gleichen .exe auf der gleichen Hardware.
huhu, les dochmal genau. Da steht es werden 54.279 Items eingetragen. Und das es auf dem System 4x langsamer ist. Es wäre auch bei 1.000.000 4x langsamer. Aber ich gebe zu, der mittlere satz ist nicht gut formuliert. Da hätte stehen müssen, das ich die gleiche .exe und die gleichen daten nehme. Aber das hatte ich wohl vorraus gesetzt das es logisch ist das ich immer die gleichen daten nehme.

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 meine Rechtschreibfehler sind Urheberrechtlich geschützt!!

Geändert von DelTurbo (29. Aug 2011 um 13:07 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf