AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TTreeView komige Speedprobleme...

Ein Thema von DelTurbo · begonnen am 26. Aug 2011 · letzter Beitrag vom 10. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#1

AW: TTreeView komige Speedprobleme...

  Alt 27. Aug 2011, 15:21
Ich glaube, Du hast begriffen, das 50.000 Einträge auf einmal anzuzeigen ziemlich "blöd" ist.
Ja klar. Aber darum geht es ja nicht. Ich frage mich nur, was kann das sein, das es hier langsamer ist als auf anderen Systemen.

Kann es an einer "falschen" DLL liegen die mit irgendwas installiert wurde? Oder Registry einträge die im eimer sind?

Ich habe noch nie irgendwelche RegCleaner oder sowas laufen lassen müssen. Vielleicht wäre das ein versuch wert. Und wenn ja, welchen würdet ihr nehmen?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#2

AW: TTreeView komige Speedprobleme...

  Alt 27. Aug 2011, 15:49
Ist schon merkwürdig. Da das TTreeView jedoch ein Windowscontrol ist, wissen wir nicht, wie die letztendlich verwaltet und gezeichnet werden.
Das Bild hängt schief.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#3

AW: TTreeView komige Speedprobleme...

  Alt 27. Aug 2011, 16:02
Ich habe mir das mal mit dem VirtualTree angesehen. 1.000.000 Root einträge dauern 63ms. 1.000.000 Childs 153ms.

Also auf VirtualTree werde ich das auf jeden fall umschreiben.

Trotzdem bleibt ein blöder beigeschmack. Warum ist das so wie es ist? Warum nur auf diesem System?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: TTreeView komige Speedprobleme...

  Alt 28. Aug 2011, 04:11
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#5

AW: TTreeView komige Speedprobleme...

  Alt 28. Aug 2011, 10:18
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). Ich habe es hier auf 6 Rechnern getestet. Angefangen vom 1,5Ghz bis zum dem hier (i5-760). Dieses Speedprob tritt nur auf einem BetriebsSystem auf. Es kann sein das es noch bei anderen objekten auftritt. Das weiß ich natürlich nicht. Es ist mir halt nun beim TreeView aufgefallen.

Das Problem könnte in der Datenquelle liegen. zum Beispiel wenn Du eine Directorystruktur einliest könnte ein bremsendes Laufwerk dabei sein (Probleme bei der Master/Slave-Konfiguration, falscher Treiber, Steckerkontaktprobleme). In einer VM ist dieses optimiert und daher schnell.
Mir ist im moment unerklärlich wie du sowas schreiben kannst. Im Thread steht das die sachen aus dem RAM (TStringlist, Post #8) gefüllt werden. Ich habe auch geschrieben das die zeit zum laden der daten abgezogen wurde.

Da anscheinden jeder nur ein Post liest, und meint antworten zu müssen ist der Thread hier total versaut. Es wird sich wohl kaum noch jemand die mühe machen 19 Posts zu lesen, wovon die meisten am eigentlichen problem vorbeigehen. Ich glaube der einzige hier der bissl begriffen hat worum es geht ist FredlFesl (Post #13).

Eigentlich sehr sehr schade.......
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Alaitoc

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

AW: TTreeView komige Speedprobleme...

  Alt 28. Aug 2011, 12:44
Eigentlich wurden hier genug Vorschläge gebracht woran es liegen könnte, wobei es wahrscheinlich wirklich nicht an der Hardware liegt oder direkt an der Komponente TTreeview, sondern einfach an den unterschiedlichen Prozessen die im Hintergrund laufen, Dienste die ebenfalls behindern könnten oder sonstige unterschiede beim Betriebssystem, wie vll. sogar Servicepacks oder sonstige Updates, wer weiß?

Zitat:
Zitat:
Zitat von Luckie:
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). Ich habe es hier auf 6 Rechnern getestet. Angefangen vom 1,5Ghz bis zum dem hier (i5-760). Dieses Speedprob tritt nur auf einem BetriebsSystem auf. Es kann sein das es noch bei anderen objekten auftritt. Das weiß ich natürlich nicht. Es ist mir halt nun beim TreeView aufgefallen.
Er hat zum Beispiel nicht nur die Hardware genannt, zusätzlich Prozesse oder sonstige Software, bzw. Fehler am Betriebssystem.

Ändere es doch einfach auf VirtualTreeview um, wenn es dann auf deinen schnellen Testrechnern in einer Sekunde läuft und auf dem langsamen Rechner ein paar Sekunden mehr dauert, wirst du dich auch nicht mehr mit dem Problem auseinandersetzen müssen.

Zitat:
Da anscheinden jeder nur ein Post liest, und meint antworten zu müssen ist der Thread hier total versaut. Es wird sich wohl kaum noch jemand die mühe machen 19 Posts zu lesen, wovon die meisten am eigentlichen problem vorbeigehen. Ich glaube der einzige hier der bissl begriffen hat worum es geht ist FredlFesl (Post #13).

Eigentlich sehr sehr schade.......
Ich behaupte jetzt einfach mal alle relevanten Informationen aus dem Thread herausgezogen zu haben, jedoch hätte ich diese Nachricht wohl am Anfang des Threads gelesen...hätte ich direkt aufgehört mich mit dem Thema auch nur ein wenig auseinanderzusetzen.
Wenn jemand wirklich den ganzen Thread nicht gelesen hat, kann man ihn einfach höflich darauf hinweisen was er übersehen hat.

MfG Alaitoc
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#7

AW: TTreeView komige Speedprobleme...

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

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

AW: TTreeView komige Speedprobleme...

  Alt 28. Aug 2011, 13: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
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.033 Beiträge
 
Delphi 12 Athens
 
#9

AW: TTreeView komige Speedprobleme...

  Alt 28. Aug 2011, 13: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
Benutzerbild von Luckie
Luckie

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

AW: TTreeView komige Speedprobleme...

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