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

Aus Hergipedia
Zur Navigation springen Zur Suche springen
K (Die Seite wurde neu angelegt: „{{:Bash: Performance Tricks}} Externe Kommandos von der shell nach Möglichkeit en-bloque auf alle Dateien auf einmal aufrufen. Als Beispiel sollen 20 Dateien i…“)
 
KKeine Bearbeitungszusammenfassung
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Bash: Performance Tricks]]
{{:Bash: Performance Tricks}}
{{:Bash: Performance Tricks}}
 
===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.
Als Beispiel sollen 20 Dateien in einem Verzeichnis angezeigt werden.


Als Beispiel sollen 20 Dateien in einem Verzeichnis angezeigt werden.
''' ''ls *.txt'' ist praktisch 20x schneller als 20 x ''ls Datei_N.txt'' einzeln.'''


ls *.txt ist dann praktisch 20x schneller als 20 x ls abc.txt einzeln.
{| {{table}}
| align="center" style="background:#f0f0f0;"|''' '''
| align="center" style="background:#f0f0f0;"|'''Cygwin'''
| align="center" style="background:#f0f0f0;"|''' Linux'''
|-
| vorher ||6.810s ||0.060s
|-
| nachher ||0.400s ||0.004s
|}


===Demonstration===
<source lang=bash>
<source lang=bash>
   mkdir bash-performance-tricks
   mkdir bash-performance-tricks
Zeile 13: Zeile 24:
</source>
</source>


=== einzeln innerhalb einer Schleife ===
==== einzeln innerhalb einer Schleife ====


   # cygwin
   # cygwin
Zeile 30: Zeile 41:




=== in einem Rutsch ===
==== in einem Rutsch ====


   # cygwin
   # cygwin

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