Root-ként futtatva az alábbiakat:
# cache törlés
echo 3 > /proc/sys/vm/drop_caches
time ruby -e 'Dir["/var/lib/mysql/**/**"].select{|f|File.file?(f)}.each{|f|File.read(f)}'
real 0m2.200s
user 0m0.076s
sys 0m0.420s
echo 3 > /proc/sys/vm/drop_caches
time find /var/lib/mysql ! -type d | while read FF; do cat "$FF" >/dev/null; done
real 0m4.881s
user 0m0.452s
sys 0m0.496s
- log69 blogja
- A hozzászóláshoz be kell jelentkezni
- 1111 megtekintés
Hozzászólások
Ez érdekes! A válasz engem is érdekelne.
- A hozzászóláshoz be kell jelentkezni
a while/read a bűnös
ez már jobb megoldás:
time find . -type f -exec cat {} >/dev/null \;
de fogadjunk, hogy ez lesz a legjobb:
time find . -type f -print0| xargs -0 cat >/dev/null
--
Live free, or I f'ing kill you.
- A hozzászóláshoz be kell jelentkezni
Bizony, nagy eséllyel az eszement mennyiségű processz kreálással járó overhead-et érzed.
- A hozzászóláshoz be kell jelentkezni
Így van, gyorsabb, ez utóbbi cache törlés után 2.00 sec alatt fut nálam ugyanolyan körülmények közt. Kösz.
- A hozzászóláshoz be kell jelentkezni
find . -type f -print0 | xargs -0 -r -- cat -- >/dev/null
- A hozzászóláshoz be kell jelentkezni
Részemről jobban kedvelem a "! -type d" paraméterezést, mert így nem csak a normál fájlokat találja meg, hanem a symlink-eket is például, szemben a "-type f" megoldással.
- A hozzászóláshoz be kell jelentkezni
És egyszer belefutsz egy pipe-ba, és jó lesz :-) Szóval azért ezt én még finomítanám.
- A hozzászóláshoz be kell jelentkezni
Esetleg
find -L . -type f
helyette?
- A hozzászóláshoz be kell jelentkezni
sub
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.
Slackware Linux 14.1 | 3.10.96-janos
- A hozzászóláshoz be kell jelentkezni