行数のカウント

用途が用途だけに行数をカウントする処理を結構書いたりするのですが、
今まで file 関数で配列に入れて count 関数で取得という方法を主に使っていたんですよね。

最近になって、クローラーの改良時に実は foepn も結構早いんじゃね?
ファイルアクセスも減るんじゃね?という感じでベンチマークを取ってみました。

まずは、 file 関数を使った例。count も sizeof? もエイリアスなので、どちらでもOK。

$buf = file(“hogehoge.dat”);? //1001行のファイル
$count1 = count($buf);
unset($buf);

これは、1000回ループで 4.653011 秒という結果になりました。
一方 fopen を使ってカウントする例。

$fp = fopen(“hogehoge.dat”, “r”);? //1001行のファイル
for ($count2=0;!feof($fp),fgets($fp);$count2++);
fclose($fp);

こちらは、 3.800635 秒とコンマ7程度早くなりました。

しかし、結局1000回実行してやっとコンマ7という結果でした。
早いには変わりないと思いますが…、まぁこんなもんなのかなぁ。

フォローする