Wie ich feststellen musste, gibt es in LotusScript erhebliche Performanceunterschiede bei dem Befehl Instr, je nachdem ob man ihn case-sensitiv verwendet oder nicht. Mit erheblich meine ich so ungefähr 900 mal langsamer, wenn der Befehl Instr mit der Option "case-insensitive, pitch-insensitive" ausgeführt wird.
Bei relativ kurzen Texten fällt es nicht
weiter auf. Wenn die Texte allerdings länger werden, macht es sicht deutlich
bemerkbar. Für das Beispiel mit der ca. 900 langsameren Ausführung habe
ich einen relativ langen "Lorem ipsum" Text (5539 Zeichen) zehn
mal aneinandergehängt. Um die Unterschiede messen zu können, habe ich den
Instr-Befehl jeweils 1000 mal durchlaufen lassen. Zum Messen habe ich eine
Profiling-Routine verwendet, die Thomas Bahn geschrieben hat.
For
i = 1 To 10
text
= text &
CRLF & text
Next
For i = 1 To 1000
Call
StartProfiling("InstrTest", "case-sensitiv")
pos =
Instr(text, "Defacto")
Call
StopProfiling("InstrTest", "case-sensitiv")
Next
For i = 1 To 1000
Call
StartProfiling("InstrTest", "case-insensitiv")
pos =
Instr(1,
text, "Defacto",5)
Call
StopProfiling("InstrTest", "case-insensitiv")
Next
Call LogProfiles()
Das Ergebnis ist recht beeindruckend.
Option | Aufrufe | Ausführungszeit
insgesamt | Ausführungszeit
durchschnittlich |
case-insensitiv | 1000 | 459,640 | 0,45964 |
case-sensitiv | 1000 | 0,063 | 0,00006 |