狐の王国


2007年03月30日(金) [過去の今日]

#2 findの-execが異様に遅い

あわてるな ディスクはそんなに 速くない という記事で、「-execは遅い」と書かれてたので試してみた。

$ time find /usr/src -type f -exec ls -l {} \; >/dev/null

real 1559.66
user 496.82
sys 688.65

$ time find /usr/src -type f -print0 | xargs -0 ls -l >/dev/null

real 176.98
user 0.53
sys 2.20

……ほんとだ。なんでこんなに顕著に遅くなるんだろう。-exec使わずxargs使え、ってことだな。もちろん -print0と-0を忘れずに

(@766)

2007-04-06追記:

相応しいかどうかもあるまい という記事で、「それは{} +じゃなくて{} ;でやってるからですよ」というご指摘。 しかしGNU findには{} +が無いのだそうで。

というわけでFreeBSDで試して……と思ったら、手元のFreeBSD 4.11Rではまだ{} +がないようだ。比較的最近の実装なのかな。お、GNU findutils 4.3系列では {} + もサポートしてるみたいだ(ソースのdocで確認)。いまDebianに入ってるのは4.2だから、まだサポートしてないわけか。

んでも-print0と-0があれば要らない気もするんだが。

この記事のURI

最近の記事

以上、1 日分

タイトル一覧


カテゴリ分類
Powered by hns-2.19.8, HyperNikkiSystem Project

過去にこの日記が置いてあったcgi.misao.gr.jpは廃止されました。それによって記事へのURIが変わってしまっています。cgi.misao.gr.jpをwww.misao.gr.jpと置き換えるだけで同じ記事にアクセスできるはずです。

Sugano "狐志庵" Yoshihisa(E) @ 美紗緒ネットワーク <koshian@misao.gr.jp>
日記管理ページ