Ich habe eine Measure
Funktion, die das Muster mehrmals ausführt, um die durchschnittliche Ausführungszeit zu erhalten.Warum wird StringRegExp langsamer, wenn ich dem Muster^hinzufüge?
Func Measure($text, $pattern, $repetitionCount)
Local $timer, $elapsed = 0
For $i = 1 To $repetitionCount
$timer = TimerInit()
StringRegExp($text, $pattern, 3)
$elapsed += TimerDiff($timer)
Next
Return $elapsed
EndFunc
This is the subject string. Mein erstes Muster ist (?m)^Connection:(.+)
, und das zweite ist (?m)Connection:(.+)
. Wie Sie sehen können, ist der einzige Unterschied der Start-of-Line-Anker ^
. Ich dachte, Ersteres wäre schneller, weil es schneller scheitern würde. Mein Testergebnis meldet jedoch, dass das Muster mit ^
~ 0,9 ms dauert, während das Muster ohne ^
nur ~ 0,1 ms dauert. Wo ist der Fehler in meiner Vorhersage?
Die AutoIt-Version ist 3.3.14.2 und ich verwende Intel Core 2 CPU.
Sie haben ungefähr 300 Großbuchstaben 'C' in Ihrem Inhalt, aber über 1000 Zeilen, so dass es mehr Orte gibt, die mit'^'übereinstimmen als mit' C' –