Hallo R,
verzeiht das ich diesen schon etwas älteren Thread noch mal hervorkrame, aber mich interessiert da ein Punkt ganz besonders, die Bemerkung in Klammern.
man merkt es nicht, aber schneller ist von "rechts" zu gucken und nach dem ersten Treffer auszusteigen (bei mir je nach Pfadlänge bis zu 15 ms):
Wie hast Du die Zeit dafür gestoppt?
Du sagst "bis zu 15 ms", aber mit welcher Methode hast Du das festgestellt, das würde mich brennend interessieren.
Und ja, ich weiß das es in der Online-Hilfe (F1) ein Beispielmakro gibt, auch die deutsche Version von 'Andrew Pitonyak' bietet da etwas an. Aber mir ist nicht klar warum das bei dir "so lange" dauert, bei mir geht das wohl schneller, jedoch weiß ich nicht ob mein Verfahren zur "Zeitmessung" mit deiner gleichzusetzen ist. Und von daher würde es mich auch interessieren was für eine Hardware Du hast.
Ich hab hier:
Prozessor = AMD Phenom II X4 945 => 4 Kerne mit je 3 GHz
RAM = 4 GB
Festplatte ist uninteressant, da ja nicht darauf zugegriffen wird, wobei in dieser hinsicht mein Kontroler Müll ist.
Für meine Tests habe ich einen Pfad unter WinXP genommen der wie folgt aussieht.
Z:\AAA\BBBB\__CCC_D_EEEE-FFFFF_GGGGGG_12.2 HH\KKK_LLLL\___MMMM-NNNNNN_PPP-QQQ-RRRRRRRR\MLL~1\Neuer Ordner\SSSSSSSSSS200T
Die wirklichen Odnernamen habe ich durch andere Buchstaben ersetzt, aber ansonsten ist die Struktur identisch, inklusive Punkt (.), Unterstriche (_), Sonderzeichen (~) und Leerzeichen.
Der Dateiname ist folgender, das ist der reale.
aaaaa bbbbb ccccc ddddd eeeee fffff ggggg hhhhh.ods
Und hier mein Testmakro.
Code: Alles auswählen
Sub DateiPfadExtrahieren_I
Dim startTicks_I As Long
Dim endTicks_I As Long
Dim lTick_I As Long
Dim sFolderUrl_I as String
startTicks_I = GetSystemTicks()
for ix = 0 to 9
sFolderUrl_I = ""
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
sUrl = thiscomponent.url
for i = len(sUrl) to 1 step -1
if mid(sUrl,i,1)= "/" then
sFolderUrl_I = left(sUrl,i)
exit for
end if
next i
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
next ix
endTicks_I = GetSystemTicks()
lTick_I = endTicks_I - startTicks_I
print lTick_I
print sFolderUrl_I
End Sub
Wie unschwer zu erkennen ist, wird dein Makro insgesamt 10 mal (0 bis 9) abgearbeitet. Und anschließend wird per PRINT angezeigt wie lange diese Wiederholungen gedauert haben.
Und das Ergebnis bei mir ist: 0, 15 und 16.
Nicht in dieser Reihenfolge, aber das sind die häufigsten Werte die ich nach mehrmaligem ausführen der Sub zu lesen bekomme.
Und falls mich jetzt nicht mein linkes Hühnerauge täuscht, würde das ja im groben bedeuten, das so rein Mathematisch berechnet ein durchlauf deiner Prozedur im Schnitt ca. 1,5 ms dauert.
Kann das sein, mach ich was falsch, oder interpretiere ich da etwas nicht richtig?
Oder seh und mach ich alles richtig, jedoch ist dein Rechensklave langsamer als meiner?
Wie Du siehst, Fragen über Fragen.
Wäre schon wenn Du was dazu sagen könntest, inklusive der Methode wie Du die Zeit gestoppt hast.
Gruß
balu