aki
akid****@s17*****
2005年 5月 1日 (日) 00:51:51 JST
なるほどなぁ。 でも…、FileCtl::file_write_contents() は、 いつかp2がPHP5必須になった場合は、 file_put_contents()に置き換えられる可能性もあるので、 ここはとりあえずそのままにしておきましょー。 -- aki ----------------------- Original Message ----------------------- From: rsk <moons****@s32*****> To: p2-ph****@lists***** Date: Sat, 30 Apr 2005 15:04:42 +0900 Subject: [P2-php-dev 16] Re: PHPでファイル書き込みのベンチマーク実験 > ファイルI/Oの負荷が重要みたいですね。 > > 個人的にはCが好きです。 > FileCtl::file_write_contents()を > if (is_array($cont)) { > fwrite($fp, implode('', $cont)); > } else { > fwrite($fp, $cont); > } > としたら面白いかも。 > > と思ったけど無意識なバグの温床となりそうだからだめかな? > # $contの各要素の改行コードの有無を間違えて悲しいことになったり > # 配列でもいけるからって間違えてオブジェクトを渡してしまったり > > // +------------------------------+ > // | rsk <moons****@s32*****> | > // +------------------------------+ > > On 2005/04/29, at 19:16, aki wrote: > > > PHPでファイル書き込みのベンチマーク実験してみました。 > > 参考までに投稿してみます。 > > > > > > $lines = file($file); > > で読み込んだ配列データを、そのまま書き込む。 > > (88,009Bytes のファイル) > > > > > > 【A】foreach で順次 fputs() 記録 > > foreach ($lines as $v) { > > fputs($fp, $v); > > } > > > > → 約 0.0065 秒 > > > > 【B】foreach でまとめて fputs() 記録 > > $cont = ''; > > foreach ($lines as $v) { > > $cont .= $v; > > } > > fputs($fp, $cont); > > > > → 約 0.0041 秒 > > > > 【C】implode でまとめて fputs() 記録 > > $cont = implode('', $lines); > > fputs($fp, $cont); > > > > → 約 0.0050 秒 > > > > > > Aは遅い。また、途中で処理が中断された時に、 > > 不完全なデータが残る可能性がある。 > > 最も速いのはBだった。 > > コードの簡便さを考慮に入れると、Cなんかもいいかも。 > > > > > > -- > > aki > > <test.php>_______________________________________________ > > P2-php-dev mailing list > > P2-ph****@lists***** > > http://lists.sourceforge.jp/mailman/listinfo/p2-php-dev > > _______________________________________________ > P2-php-dev mailing list > P2-ph****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/p2-php-dev