Bash: Performance Tricks: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
K (Die Seite wurde neu angelegt: „== Synopsis == Shell-Skripte können im Vergleich zu "echten" Programmen regelrechte Performancefallen enthalten, die nicht offensichtlich sind. Diese können au…“) |
K (→Synopsis) |
||
Zeile 9: | Zeile 9: | ||
* unsere Backupsskripts, | * unsere Backupsskripts, | ||
* [[SSH-Tunnel#Beispielscript_zur_Automatisierung | unser Tunnelskript ]] | * [[SSH-Tunnel#Beispielscript_zur_Automatisierung | unser Tunnelskript ]] | ||
Gerade unter cygwin ist die Ursache meist der unnötige Aufruf externer Programme | |||
aus dem Skript eraus. Als Beispiel 20 Dateien in einem Verzeichnis angezeigt werden. | |||
<source lang=bash> | |||
mkdir bash-performance-tricks | |||
cd bash-performance-tricks | |||
for ((i=0; i<20; ++i )); do echo "Hallo Welt" > $i.txt; done | |||
</source> | |||
=== einzeln innerhalb einer Schleife === | |||
# cygwin | |||
time for i in *.txt; do ls -l $i; done | |||
... | |||
real 0m6.810s | |||
user 0m0.820s | |||
sys 0m3.880s | |||
=== in einem Rutsch === | |||
# cygwin | |||
time ls -l *.txt | |||
... | |||
real 0m0.400s | |||
user 0m0.040s | |||
sys 0m0.230s |
Version vom 13. Januar 2010, 10:57 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.
Praxisbeispiele:
- unsere Backupsskripts,
- unser Tunnelskript
Gerade unter cygwin ist die Ursache meist der unnötige Aufruf externer Programme aus dem Skript eraus. 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
in einem Rutsch
# cygwin time ls -l *.txt ... real 0m0.400s user 0m0.040s sys 0m0.230s