Hallo,
Ich verstehe nur noch nicht, warum sie ca. 22% langsamer ist.
Eigentlich sollte sie schneller sein.
eigentlich nicht. Es war mir von vorneherein klar, dass das langsamer wird. Das ist der Preis, der für die Flexibilität gezahlt werden muss. Es sind zusätzliche Abfragen drin, die du bei deinem Code nicht brauchst, weil du nur einen einzigen Fall abdeckst. Hinzu kommt der Zeitverlust durch die ständige Übergabe der drei Parameter. Letzteres ließe sich ändern indem man zB „TestString“ und „Len“ unitweit deklariert und nicht als übergibt. Außerdem muss bei jedem Aufruf der Funktion die Variable „i“ auf dem Stack neu erzeugt und dann wieder entfernt werden. Auch diese könnte man global deklarieren und damit etwas Zeit sparen.
Es ist wie immer beim Programmieren. Die Vorgaben Geschwindigkeit, Übersichtlichkeit des Codes, Wiederverwendbarkeit etc lassen sich kaum alle unter einen Hut bringen ohne an einigen Stellen Abstriche zu machen. Insofern ist dein Code (mit den kleinen Verbesserungen) sicher das Optimum für den Fall, dass die Geschwindigkeit im Vordergrund steht.
Ach so: Lass mal das Schreiben in die Datei weg und vergleich dann. Erst dann siehst du, wie schlapp meine Version tatsächlich ist.
Wenn ich mein Programm wie oben beschrieben ändere, ist es (ohne Dateischreiben) doppelt so schnell wie meine ursprüngliche Version.
Gruss, Niels