[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: