Bash: Performance Tricks: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
K (→Synopsis) |
KKeine Bearbeitungszusammenfassung |
||
Zeile 5: | Zeile 5: | ||
auf einfachste Weise erheblich "getunt" werden, wobei z.T. | auf einfachste Weise erheblich "getunt" werden, wobei z.T. | ||
Geschwindigkeit-Steigerung um den Faktor 1000 und mehr möglich sind. | Geschwindigkeit-Steigerung um den Faktor 1000 und mehr möglich sind. | ||
Viele Dinge, die unter Linux "schnell genug" sind, werden unter | |||
Cygwin "zu langsam", was diese Plattform zu einem guten Benchmark macht. | |||
Praxisbeispiele: | Praxisbeispiele: | ||
Zeile 10: | Zeile 12: | ||
* [[SSH-Tunnel#Beispielscript_zur_Automatisierung | unser Tunnelskript ]] | * [[SSH-Tunnel#Beispielscript_zur_Automatisierung | unser Tunnelskript ]] | ||
Die Ursache ist meist der unnötige Aufruf externer Programme | |||
aus dem Skript | aus dem Skript heraus. | ||
Als Beispiel 20 Dateien in einem Verzeichnis angezeigt werden. | |||
<source lang=bash> | <source lang=bash> | ||
Zeile 27: | Zeile 30: | ||
user 0m0.820s | user 0m0.820s | ||
sys 0m3.880s | sys 0m3.880s | ||
# Linux | |||
time for i in *.txt; do ls -l $i; done | |||
... | |||
real 0m0.060s | |||
user 0m0.004s | |||
sys 0m0.032s | |||
=== in einem Rutsch === | === in einem Rutsch === | ||
Zeile 36: | Zeile 47: | ||
user 0m0.040s | user 0m0.040s | ||
sys 0m0.230s | sys 0m0.230s | ||
# Linux | |||
time ls -l *.txt | |||
... | |||
real 0m0.004s | |||
user 0m0.000s | |||
sys 0m0.000s |
Version vom 13. Januar 2010, 11:03 Uhr
Synopsis
Shell-Skripte können im Vergleich zu "echten" Programmen regelrechte Performancefallen enthalten, die nicht offensichtlich sind. Diese können auf einfachste Weise erheblich "getunt" werden, wobei z.T. Geschwindigkeit-Steigerung um den Faktor 1000 und mehr möglich sind. Viele Dinge, die unter Linux "schnell genug" sind, werden unter Cygwin "zu langsam", was diese Plattform zu einem guten Benchmark macht.
Praxisbeispiele:
- unsere Backupsskripts,
- unser Tunnelskript
Die Ursache ist meist der unnötige Aufruf externer Programme aus dem Skript heraus. Als Beispiel 20 Dateien in einem Verzeichnis angezeigt werden.
mkdir bash-performance-tricks
cd bash-performance-tricks
for ((i=0; i<20; ++i )); do echo "Hallo Welt" > $i.txt; done
einzeln innerhalb einer Schleife
# cygwin time for i in *.txt; do ls -l $i; done ... real 0m6.810s user 0m0.820s sys 0m3.880s # Linux time for i in *.txt; do ls -l $i; done ... real 0m0.060s user 0m0.004s sys 0m0.032s
in einem Rutsch
# cygwin time ls -l *.txt ... real 0m0.400s user 0m0.040s sys 0m0.230s # Linux time ls -l *.txt ... real 0m0.004s user 0m0.000s sys 0m0.000s