Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi VirtualTreeView mit Handbremse? (https://www.delphipraxis.net/187446-virtualtreeview-mit-handbremse.html)

Daniel 30. Nov 2015 14:53

VirtualTreeView mit Handbremse?
 
Moin,

ich nutze in Delphi XE8 den VirtualTreeView, wie er über GetIt ausgeliefert wird. Die Version identifiziert sich selbst als 6.1.0.
Kann es sein, dass die langsamer ist als früher? Ich erinnere mich an Zeiten, in denen man Tausende an Einträgen einfügen konnte, ohne nennenswert zu warten.

Aktuell habe ich rund 10.000 Einträge und warte reproduzierbar rund 1.5 Sekunden. Leere VCL-Anwendung, VirtualTree raufgebatscht und folgenden Code ausgeführt:


Delphi-Quellcode:
procedure TForm7.Button1Click(Sender: TObject);
var
  LNode : PVirtualNode;
  i : integer;
  s, e : cardinal;
begin
  s := GetTickCount;

  VirtualStringTree1.BeginUpdate;
  TRY
    for i := 0 to 9999 do
    begin
      LNode := VirtualStringTree1.AddChild( NIL );
    end;
  FINALLY
    VirtualStringTree1.EndUpdate;
  END;

  e := GetTickCount;
  ShowMessage( IntToStr(e-s) );
end;
Hat einer einen VST aus einer anderen Quelle und könnte mal testen, ob es da auch ähnliche Verzögerungen gibt?
Ich hätte jetzt Zeiten < 100ms erwartet.

Der schöne Günther 30. Nov 2015 15:02

AW: VirtualTreeView mit Handbremse?
 
Meine Version, wo auch immer ich die herhabe, sagt
Delphi-Quellcode:
VirtualTrees.VTVersion = '6.2.1'
und braucht für deinen Code (32 Bit) in Debug ca. 530ms, in Release 310ms.

(XE7, Update 1)

TiGü 30. Nov 2015 15:07

AW: VirtualTreeView mit Handbremse?
 
Mein Delphi Seattle mit
Delphi-Quellcode:
VTVersion = '6.1.0';
sagt was zwischen 910 - 940 ms (mit Debug Win32 auf i7-4790 @ 3.60 GHz, 16 GB RAM, SSD).

mkinzler 30. Nov 2015 15:07

AW: VirtualTreeView mit Handbremse?
 
Das ist die aktuelle Version, die man z.B. über Delphinus beziehen kann.

TiGü 30. Nov 2015 15:11

AW: VirtualTreeView mit Handbremse?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1322952)
Meine Version, wo auch immer ich die herhabe, sagt
Delphi-Quellcode:
VirtualTrees.VTVersion = '6.2.1'

Wie das?
Bei GitHub finde ich nur 6.1.0:
https://raw.githubusercontent.com/Tu...rtualTrees.pas

Daniel 30. Nov 2015 15:13

AW: VirtualTreeView mit Handbremse?
 
Danke für den Test.
Seltsam - ich hätte schwören können, dass die Komponente mal schneller war. Aber man wird nicht jünger und in der Erinnerung war ja früher alles besser. :mrgreen:

TiGü 30. Nov 2015 15:19

AW: VirtualTreeView mit Handbremse?
 
Früher war das Internet viel schneller...:lol:

mkinzler 30. Nov 2015 15:26

AW: VirtualTreeView mit Handbremse?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von TiGü (Beitrag 1322958)
Zitat:

Zitat von Der schöne Günther (Beitrag 1322952)
Meine Version, wo auch immer ich die herhabe, sagt
Delphi-Quellcode:
VirtualTrees.VTVersion = '6.2.1'

Wie das?
Bei GitHub finde ich nur 6.1.0:
https://raw.githubusercontent.com/Tu...rtualTrees.pas

In der TuboPack version.

Diese ist aber neuer:

https://github.com/Virtual-TreeView/Virtual-TreeView

SProske 30. Nov 2015 15:30

AW: VirtualTreeView mit Handbremse?
 
XE3, VST Version 5.1.1

Zeit im nicht messbaren Bereich (0 oder 16)

DeddyH 30. Nov 2015 15:50

AW: VirtualTreeView mit Handbremse?
 
Zitat:

Zitat von Daniel (Beitrag 1322959)
Aber man wird nicht jünger und in der Erinnerung war ja früher alles besser. :mrgreen:

Früher war ja auch mehr Lametta :mrgreen:

TiGü 30. Nov 2015 15:52

AW: VirtualTreeView mit Handbremse?
 
Ach guck, in der 6.2.1er sind möglicherweise deine Probleme gefixt:
Code:
* Fixed issue #569 which includes a fix for AddChild().
* #586: TBaseVirtualTree.SetChildCount() no longer calls to ReInitNode(Node, True). This caused the OnInitChildren-Event to be fired twice.
https://github.com/Virtual-TreeView/...er/CHANGES.txt

Daniel 30. Nov 2015 15:54

AW: VirtualTreeView mit Handbremse?
 
Danke. Beim Debuggen bin ich exakt auch dort gelandet - konnte aber auf die Schnelle nicht abschätzen, welche Auswirkungen das Auskommentieren dieser Zeile haben könnte.

Blup 30. Nov 2015 16:10

AW: VirtualTreeView mit Handbremse?
 
VirtualTrees Version 4.8.5
Delphi 2007
Intel i5 in einer VM

Geschwindigkeit schwankt zwischen 30 und 50ms.

Daniel 30. Nov 2015 16:11

AW: VirtualTreeView mit Handbremse?
 
Ja, danke für die Bestätigung. Wenn ich in meiner Version den Aufruf von "ReInitNodes" ausklammere, komme ich auch wieder auf die (von mir) erwarteten Zeiten.
Dann mache ich nachher mal ein Ticket auf, damit EMBT diese Korrektur übernimmt. Mit dem Duplizieren der Code-Basis haben sie sich keinen Gefallen getan.

romankassebaum 30. Nov 2015 17:52

AW: VirtualTreeView mit Handbremse?
 
Hallo Daniel,

Ich habe soeben die TurboPack-Version aktualisiert und EMBT gebeten, GitHub zu aktualisieren.

Es gibt gute Gründe, warum wir mit einem Fork arbeiten müssen. Falls Du Interesse hast, dann ruf mich einfach mal an oder frag bei Marco nach. Möglicherweise sind Marcos Deutschkenntnisse sogar gut genug, und er kann hier antworten.

--
Viele Grüße,

Roman

Daniel 30. Nov 2015 17:56

AW: VirtualTreeView mit Handbremse?
 
Hallo Roman,

vielen Dank für Dein schnelles Eingreifen. :thumb:
Ich kenne Marcos Argumentation - bzw. die von EMBT. Ich sehe es jedoch etwas anders. ;-)

Alex_ITA01 30. Nov 2015 20:00

AW: VirtualTreeView mit Handbremse?
 
Die aktuellste Version gibts übrigens auch immer hier:

http://www.jam-software.com/virtual-treeview/

:-D

Aviator 30. Nov 2015 20:55

AW: VirtualTreeView mit Handbremse?
 
Hi Daniel,
normalerweise sollte man die Nodes auch nicht mit
Delphi-Quellcode:
AddChild()
einfügen, sondern die Eigenschaft
Delphi-Quellcode:
RootNodeCount
auf den entsprechenden Wert setzen. Vorteil ist, dass die Nodes erst dann wenn man sie wirklich braucht initialisiert werden. Du kannst dir ja mal den extra großen Kommentar von Mike Lischke durchlesen den er über diese Procedure geschrieben hat. Sofern dieser in der neuen Version noch vorhanden ist seitdem die Firma JamSoftware die Komponente übernommen hat.

mkinzler 30. Nov 2015 21:01

AW: VirtualTreeView mit Handbremse?
 
Ja der Hinweis ist noch vorhanden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 Uhr.

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