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:
Hat einer einen VST aus einer anderen Quelle und könnte mal testen, ob es da auch ähnliche Verzögerungen gibt?
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; Ich hätte jetzt Zeiten < 100ms erwartet. |
AW: VirtualTreeView mit Handbremse?
Meine Version, wo auch immer ich die herhabe, sagt
Delphi-Quellcode:
und braucht für deinen Code (32 Bit) in Debug ca. 530ms, in Release 310ms.
VirtualTrees.VTVersion = '6.2.1'
(XE7, Update 1) |
AW: VirtualTreeView mit Handbremse?
Mein Delphi Seattle mit
Delphi-Quellcode:
sagt was zwischen 910 - 940 ms (mit Debug Win32 auf i7-4790 @ 3.60 GHz, 16 GB RAM, SSD).
VTVersion = '6.1.0';
|
AW: VirtualTreeView mit Handbremse?
Das ist die aktuelle Version, die man z.B. über Delphinus beziehen kann.
|
AW: VirtualTreeView mit Handbremse?
Zitat:
Bei GitHub finde ich nur 6.1.0: https://raw.githubusercontent.com/Tu...rtualTrees.pas |
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: |
AW: VirtualTreeView mit Handbremse?
Früher war das Internet viel schneller...:lol:
|
AW: VirtualTreeView mit Handbremse?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Diese ist aber neuer: https://github.com/Virtual-TreeView/Virtual-TreeView |
AW: VirtualTreeView mit Handbremse?
XE3, VST Version 5.1.1
Zeit im nicht messbaren Bereich (0 oder 16) |
AW: VirtualTreeView mit Handbremse?
Zitat:
|
AW: VirtualTreeView mit Handbremse?
Ach guck, in der 6.2.1er sind möglicherweise deine Probleme gefixt:
Code:
https://github.com/Virtual-TreeView/...er/CHANGES.txt
* 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. |
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.
|
AW: VirtualTreeView mit Handbremse?
VirtualTrees Version 4.8.5
Delphi 2007 Intel i5 in einer VM Geschwindigkeit schwankt zwischen 30 und 50ms. |
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. |
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 |
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. ;-) |
AW: VirtualTreeView mit Handbremse?
Die aktuellste Version gibts übrigens auch immer hier:
http://www.jam-software.com/virtual-treeview/ :-D |
AW: VirtualTreeView mit Handbremse?
Hi Daniel,
normalerweise sollte man die Nodes auch nicht mit
Delphi-Quellcode:
einfügen, sondern die Eigenschaft
AddChild()
Delphi-Quellcode:
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.
RootNodeCount
|
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