Bash-Tricks: Zusammenfassen externer Kommandos: Unterschied zwischen den Versionen

Aus Hergipedia
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
[[Bash: Performance Tricks]]
[[Bash: Performance Tricks]]
{{:Bash: Performance Tricks}}
{{:Bash: Performance Tricks}}
===Regel===
===Regel===
Externe Kommandos von der shell nach Möglichkeit en-bloque auf alle Dateien auf einmal aufrufen.
Externe Kommandos von der shell nach Möglichkeit en-bloque auf alle Dateien auf einmal aufrufen.
Zeile 19: Zeile 18:


===Demonstration===
===Demonstration===
<br>
<source lang=bash>
<source lang=bash>
   mkdir bash-performance-tricks
   mkdir bash-performance-tricks

Aktuelle Version vom 13. Januar 2010, 12:28 Uhr

Bash: Performance Tricks

  1. Zusammenfassen von externen Kommandos: for i in *; ls $i; done
  2. grep Ersetzen durch =~ : ... | grep abc.txt
  3. cat Ersetzen durch < : cat abc.txt

Regel

Externe Kommandos von der shell nach Möglichkeit en-bloque auf alle Dateien auf einmal aufrufen. Als Beispiel sollen 20 Dateien in einem Verzeichnis angezeigt werden.

ls *.txt ist praktisch 20x schneller als 20 x ls Datei_N.txt einzeln.

Cygwin Linux
vorher 6.810s 0.060s
nachher 0.400s 0.004s

Demonstration

  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