Bash: Performance Tricks: Unterschied zwischen den Versionen

Aus Hergipedia
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…“)
 
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:

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