Re: Skriptfrage: Textdateien bearbeiten
Heiko Schlittermann, Mittwoch, 2. Januar 2013:
> > Das dürfte nicht so arg lange dauern.
>
> Nein. Ich habe hier mal 6000x sed aufgerufen:
>
> $ time for i in {1..6000}; do sed -i 's_a_b_' a; done
> real 0m16.514s
> user 0m0.388s
> sys 0m2.548s
>
> In der Datei „a“ sind knapp 50 Zeilen. Bei knapp hundert Zeilen braucht
> es 19 Sekunden. (Normaler Laptop, QuadCore mit 1.2GHz, 4GB RAM).
>
> Das ist alles ein lokales Dateisystem?
Ja, das Storage ist lokal. Es ergibt bei mir:
# time for i in {1..6000}; do sed -i 's_a_b_' xxx.txt; done
real 0m29.894s
user 0m13.856s
sys 0m12.653s
xxx.txt ist eine abgespeicherte E-Mail mit ca. 5 kB. Das stimmt schon so
ungefähr mit dem überein, was Du beobachtest. Weiter:
# time find . -iname 'dovecot-acl' > /dev/null
real 0m0.500s
user 0m0.284s
sys 0m0.211s
find macht also das Kraut nicht fett.
Trotzdem:
# time find . -name 'dovecot-acl' | while read i; do sed -i
's_blabla_xyz_' "$i"; done
real 3m11.420s
user 0m6.548s
sys 0m9.155s
Wo diese Zeit jetzt herkommt - keine Ahnung. Irgendwer wartet also auf
irgendwas, und deswegen geht auch die Systemlast nicht nach oben. Das
wiederum war der Grund, warum ich dachte, daß da was hängt, was aber gar
nicht der Fall ist.
--
Andre Tann
Reply to: