Bash: Performance Tricks: Unterschied zwischen den Versionen

Aus Hergipedia
Zur Navigation springen Zur Suche springen
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 ]]


Gerade unter cygwin ist die Ursache meist der unnötige Aufruf externer Programme  
Die Ursache ist meist der unnötige Aufruf externer Programme  
aus dem Skript eraus. Als Beispiel 20 Dateien in einem Verzeichnis angezeigt werden.
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:

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