AGB  ·  Datenschutz  ·  Impressum  







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

VirtualStringTree - Nodes hinzufügen

Ein Thema von d7user1 · begonnen am 23. Mär 2014 · letzter Beitrag vom 30. Mär 2014
Antwort Antwort
d7user1
(Gast)

n/a Beiträge
 
#1

AW: VirtualStringTree - Nodes hinzufügen

  Alt 25. Mär 2014, 00:42
kann es sein dass das daran liegt dass es ein laptop ist?
könntest du mein beispiel oben eventuell testen?


edit:
ich habe mal die dateiliste der dateien die rekursiv in C:\Windows sind in eine textdatei gepackt.
mein testprogramm lädt nun diese testdatei anstatt die liste selber zusammenzustellen per FindFirst usw usw.

mit dem code aus der code-lib braucht mein rechner 4 bis 5 sekunden. mein angepasster, für meine bedürfnisse, code braucht etwa 5.5 bis 6 sekunden.

und das laden der textdatei direkt in die stringlist benötigt nur 200ms ungefähr. demnach ist es eindeutig meine festplatte die entweder hinüber ist oder
meine windows-installation. das seltsame ist aber dass ein anderer datenträger bei 13000 dateien dennoch 3 sekunden benötigt. ich glaube also es ist die windows-installation.

Geändert von d7user1 (25. Mär 2014 um 14:44 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: VirtualStringTree - Nodes hinzufügen

  Alt 25. Mär 2014, 18:28
Ich weiß nicht, aber kann es sein, dass dir dein Virenscanner dazwischen redet? Je nach Virenscanner wird jede Datei die angepackt wird, wenn auch nur markiert im Explorer, gescannt. Was mir aufgefallen ist, dass dein Programm beim ersten Durchlauf etwa 6 Sekunden gebraucht hat, dann stets um die 600 ms. Falls du einen Virenscanner hast, schalte den mal für einen Test ab.

Ansonsten finde ich, dass dein Fenster etwas zäh ist, d. h. länger für den Aufbau braucht. Evtl. liegt das an deiner Komponente. Wendest du auch BeginUpdate und EndUpdate im Code?
  Mit Zitat antworten Zitat
d7user1
(Gast)

n/a Beiträge
 
#3

AW: VirtualStringTree - Nodes hinzufügen

  Alt 25. Mär 2014, 18:32
das könnte daran liegen dass ich den font und den hintergrund einfärbe und jeweils zwei icons pro node hinzufüge.

jawohl. nutze begin und endupdate.
wenn der letzte node erreich ist, rufe ich aber einmal VST.Invalidate auf da sonst, wenn zu wenige nodes vorhanden sind (keine scrollbar), die nodes nicht eingefärbt werden.

sehr interessanter ansatz mit dem virenscanner. aber mit ausgeschaltetem und eingeschaltetem virenscanner benötigt die testanwendung 4.5 sekunden. seltam.

Geändert von d7user1 (25. Mär 2014 um 18:40 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: VirtualStringTree - Nodes hinzufügen

  Alt 25. Mär 2014, 18:50
Nun, das könnte alles ein Grund sein, aber mein Beispiel nutzt das nicht und braucht bei dir auch 5 Sekunden.
  Mit Zitat antworten Zitat
d7user1
(Gast)

n/a Beiträge
 
#5

AW: VirtualStringTree - Nodes hinzufügen

  Alt 25. Mär 2014, 19:21
ja, das ist sehr seltsam.
auch seltsam ist dass mein beispiel bei dir das erste mal länger braucht als danach.

aber wie bereits gefragt, kann es sei dass das daran liegt dass ich einen laptop benutze?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: VirtualStringTree - Nodes hinzufügen

  Alt 25. Mär 2014, 19:50
Reduzieren wir alles auf das Nötigste. Führe mal den Code aus und gibt das Ergebnis aus der Zwischenablage hier zurück:
Delphi-Quellcode:
uses
  DateUtils, Clipbrd;

procedure Test(SearchPath: String; var Sum: Integer);
var
  SearchRec: TSearchRec;
begin
  SearchPath := IncludeTrailingPathDelimiter(SearchPath);

  if FindFirst(SearchPath + '*.*', faAnyFile or faDirectory, SearchRec) = 0 then
  try
    repeat
      Inc(Sum);
    until FindNext(SearchRec) <> 0;
  finally FindClose(SearchRec) end;

  if FindFirst(SearchPath + '*.*', faDirectory, SearchRec) = 0 then
  try
    repeat
      if ((SearchRec.Attr and faDirectory) = faDirectory) and
        (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
        Test(SearchPath + SearchRec.Name, Sum);
    until FindNext(SearchRec) <> 0;
  finally FindClose(SearchRec) end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  T1, T2: TTime;
  A: Integer;
  s: String;
begin
  T1 := Now;
  A := 0;
  Test('c:\windows\', A);
  T2 := Now;

  s := Format('Anzahl Daten: %d; Zeit im Millisekunden: %d', [A, MilliSecondsBetween(T1, T2)]);
  ShowMessage(s);
  Clipboard.AsText := s; //kopiert Ergebnis in Zwischenablage
end;
  Mit Zitat antworten Zitat
d7user1
(Gast)

n/a Beiträge
 
#7

AW: VirtualStringTree - Nodes hinzufügen

  Alt 25. Mär 2014, 20:04
ok, also. programm (nur dieser code) wurde kompiliert und direkt mit der ide ausgeführt.

klick 1: Anzahl Daten: 119168; Zeit im Millisekunden: 4319

klick 2: Anzahl Daten: 119168; Zeit im Millisekunden: 4189

klick 3: Anzahl Daten: 119168; Zeit im Millisekunden: 4087

Geändert von d7user1 (25. Mär 2014 um 20:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:02 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