tuning

Speed Up Search & Replace in Shellscripts

Written by  on Oktober 3, 2014

Als erstes erzeugen wir ein paar Testdaten:

for i in {0..100000..1}; do echo "y $i $RANDOM "; done > testfile

Die Testdaten sehen jetzt etwa so aus (ca. 15MB):

head testfile
y 0 8229
y 1 32515
y 2 13193
y 3 31231
y 4 27663
y 5 24114
y 6 20325
y 7 5351
y 8 1576
y 9 21936
Wir ersetzen alle y durch x mit awk:
# time awk '{ print "x "$2" "$3 }' < testfile > /dev/null
real 0m5.942s
user 0m5.672s
sys 0m0.088s

und jetzt mit sed

# time sed s/"y"/"x"/g testfile > /dev/null
real 0m4.870s
user 0m4.644s
sys 0m0.072s

Wir schränken die suche ein – nach dem ersten Treffer darf abgebrochen werden

# time sed s/"y"/"x"/ testfile > /dev/null
real 0m3.560s
user 0m3.380s
sys 0m0.084s

Wir suchen gezielt nach Zeilenanfang

# time sed s/"^y"/"x"/ testfile > /dev/null
real 0m3.604s
user 0m3.416s
sys 0m0.104s

Und ersetzen auch Zeilenanfang

# time sed s/"^y"/"^x"/ testfile > /dev/null
real 0m3.575s
user 0m3.428s
sys 0m0.064s

Fazit: Wenn man das richtige Werkzeug zur richtigen Zeit benutzt lassen sich recht einfach 40% einsparen! AWK schneidet hier deutlich langsamer ab, weil erst die Parameter geparsed werden müssen!

Buchtipp: Web Performance Tuning

Written by  on Juli 13, 2008

It seems there are infinite number of ways for a web site to break, making it difficult to systematically check all of them. The longer I work on web sites, the more surprised I am at the creativity of complex systems in finding ways to fail.

— Patrick Killelea, Web Performance Tuning, O'Reilly

Blauer Tacho

Written by  on Mai 4, 2007

Heute hab ich es gewagt und die kaputte Beleuchtung vom Tacho durch blaue LEDs ersetzt. Schaut soweit schon ganz gut aus, mal sehen wie das ganze Abenteuer in absoluter Dunkelheit kommt!