Kornshell (ksh) vs Perl – Part II – Laufzeitvergleich: mehre Arbeitsschritte mit kleine Dateien

Im vorigen Artikel ging es um einen allgemeinen Vergleich von KornShell (ksh) vs Perl. Dabei wurde deutlich, je größer die Dateien desto größer der Geschwindigkeitsvorteil von Perl gegenüber Kornshell. Perl ist bei einer Dateigröße von 500 KB bzw. 1 MB klar im Vorteil.

Jetzt stellt sich die Frage, was passiert bei kleinen Dateien, wenn mehre Aktionen bzw. Operationen innerhalb eines Scripts angewendet werden. Beispiel wäre hier die EDI Vorverarbeitung, wo die Dateien eine durchschnittliche Größe von 5KB bis 16KB haben. Dort werden Daten auf Basis von Teilstrings analysiert, sortiert oder angereichert.

In diesem Test werden 8 Arbeitsschritte (Aktionen/Operationen) in den Skripten durchgeführt und zur Gegenüberstellung einfach verdoppelt.

Was sind Operationen/Aktionen?

In diesem Fall betrachten wir Operationen/Aktionen eines Scripts als einzelnen Verarbeitungsschritte z.B. String suchen; Datei lesen usw.

Schritte der Testskripte

1. Datei Zeilenweise durchlaufen
2. Zeichen rechts von einer Zeichenkette (Zeile) abschneiden
3. Zeichen links von der Zeichenkette abschneiden
4. Neue Zeichenkette in eine Datei schreiben
5. Prüfen ob ein Verzeichnis existiert
6. Datei kopieren
7. Länge der Zeichenkette in die Datei schreiben
8. Kopierte Datei löschen.

Zeitmessung

Zur Zeitmessung wird vor und nach dem Aufruf des jeweiligen Testskriptes die Zeit weggeschrieben und anschließend daraus die Laufzeit in Millisekunden berechnet. Zur Start- und Endzeitermittlung wird wie im vorigen Test nachfolgendes kleines Perlskript verwendet.

Test Scripts

Kornshell (ksh) Perl
MyTest.ksh MyTest.pl

Ergebnisse Laufzeit

Inhalt
[Lines]
Size
[Kb]
Laufzeit
Kornshell
[8 Steps]
Laufzeit
Perl
[8 Steps]
Laufzeit
Kornshell
[16 Steps]
Laufzeit
Perl
[16 Steps]
Faktor
Perl faster Ksh!?
[8 Steps]
Faktor
Perl faster Ksh?
[16 Steps]
3 0,122 Kb 82 ms 83 ms 102 ms 158 ms 1,01x 1,55x
15 0,610 Kb 117 ms 192 ms 124 ms 367 ms 1,64x 2,97x
30 1,221 Kb 225 ms 347 ms 129 ms 606 ms 1,54x 4,70x
60 2,441 Kb 189 ms 634 ms 236 ms 1302 ms 3,35x 5,51x
90 3,662 Kb 326 ms 857 ms 256 ms 1845 ms 2,63x 7,20x
120 4,883 Kb 275 ms 1006 ms 335 ms 2652 ms 3,66x 7,91x
150 6,104 Kb 336 ms 1217 ms 377 ms 3221 ms 3,62x 8,55x
300 12,207 Kb 648 ms 2621 ms 771 ms 6420 ms 4,05x 8,33x

Vergleich KSH vs Perl Laufzeit [8 Steps]

ksh_vs_perl_8_programming_operations

ksh_vs_perl_8_programming_operations_in_KB

Vergleich KSH vs Perl Laufzeit [16 Steps]

ksh_vs_perl_16_programming_operations

ksh_vs_perl_16_programming_operations_in_KB

Vergleich KSH vs Perl Laufzeitfaktor

Wie viel langsamer ist Kornshell gegenüber Perl, wenn die Arbeitsschritte (Operation/Aktion) sich erhöhen?
ksh_vs_perl_compare_8_vs_16_programming_operations_in_KB

Fazit

In dem Test wird ersichtlich, dass mit der steigenden Anzahl von Arbeitsschritten (Aktionen/Operationen) das Kornshell (ksh) Skript sich gegenüber Perl verlangsamt. Im Bereich der Dateigröße von 0,5 KB bis >12 KB sieht man klar das sich der Geschwindigkeitsvorteil von Perl verdoppelt, wenn sich die Anzahl der Aktionen/Operationen im Skript ebenfalls verdoppelt. Kornshell ist eindeutig ein gutes Werkzeug für kleine und schnell Aufgaben zur Analyse im administrativen/operativen Bereich z.B. bei kleinen bis mittel große Dateien. Bei allen vollautomatischen Analysen oder wiederkehrenden automatisierte Scripts mit mehreren Operationen/Aktionen sowie großen Dateien sollte auf Perl Scripting gesetzt werden um die jeweiligen System Ressourcen zu schonen bzw. sparen.

(Visited 45 times, 1 visits today)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.