[P2-php-dev 21] Re: PHPでファイル書き込みのベンチマーク

Back to archive index

aki akid****@s17*****
2005年 5月 1日 (日) 02:56:13 JST


データ、ありがとうございます。
ふむふむ、参考になるなぁ。

でもメモリは少し増えるのかな、どっち使うか微妙ですねー。
(array_multisortを利用する場合は、ソート用配列の代入処理自体のコストもあるかな)
しかし100倍はすごい極端だよ、PHP。

ちなみにソートについては、ぼくの言葉足らずだったかも…。
まとめてソート処理が必要だから、
ひとつひとつ処理しながらの逐次表示ができなくて困るなぁ、
という意味でした。

Xdebug入れて、subject.phpで使用している全関数の処理時間を
眺めてみたのですが、特別にネックになっている処理はないと言っていいかも。
特に無駄もなく、しかし、全体的な処理の積み重ねで重い様子。。

DB化を進めたほうが手っ取り早いのかなあ。

--
aki

----------------------- Original Message -----------------------
From:    rsk <moons****@s32*****>
To:      p2-ph****@lists*****
Date:    Sat, 30 Apr 2005 17:36:37 +0900
Subject: [P2-php-dev 19] Re: PHPでファイル書き込みのベンチマーク

> 自己レス。
> まず元の趣旨を読み違えていたことをお詫びします。
> 
> ソートの高速化ですが自分でやってみました。
> Pen3-866MHzのFreeBSD鯖、PHP 4.3.11、Apache 1.3.33 です。
> それぞれ1回ずつしかテストしてませんが
> 
> ニュー速+:      usort        array_multisort
> 新着:     0.0107100009918   0.000802993774414
> レス:     0.0109939575195   0.00127506256104
> no.:      0.00550389289856  0.000441789627075
> タイトル: 0.0103631019592   0.000828981399536
> 勢い:     0.0112819671631   0.000860929489136
> Birthday: 0.0108380317688   0.00204801559448
> 
> 約100倍の高速化!
> 自分でもびっくり。
> p2 1.5.19 へのパッチも添付します。
> 
> ただソートよりもgetThreadInfoFromSubjectTxtLine()やsb_print()の
> 占める割合が高すぎて全体としては誤差の範囲でした。
> メモリを多く使うようになるのでソートは今のままでも十分かも。
> 
> 対策として
> ・P2Util::recKeyIdx()で全てのidxを一つにまとめたキャッシュを作成し、
>  subject.phpではこれを読む
> というのを考えてみたけど、確実に処理がややこしくなるし
> 別方向で負荷が高くなりそうな予感がしますね。
> 
> 難しいなあ。
> 
> // +------------------------------+
> // | rsk <moons****@s32*****> |
> // +------------------------------+
> 
> On 2005/04/30, at 15:24, rsk wrote:
> 
> > ソートなんですが、イメージキャッシュ(1)の画像リストのソートでも
> > 悩んだことがあります。
> > そのときの経験として、usort()するよりは
> > オリジナルの配列ともう一つ比較用の配列を作って、
> > array_multisort($cmp_arr, $orig_arr);
> > したほうがかなり速かったです。
> > (たぶん、組み込み関数だから)
> >
> > usort($aThreadList->threads, 'cmp_midoku');
> > なら
> > 各 $aThread の $new, $unum, $torder をそれぞれ一次元の配列に押し込んどいて
> > array_multisort($cmp_new, SORT_DESC, $cmp_unum, SORT_DESC,
> >   $cmp_torder, SORT_ASC, $aThreadList->threads);
> > とすると高速化するかもしれません。
> >
> > $cmp_xxxは $aThreadList のプロパティとして
> > ThreadList::addThread() で登録するのが楽じゃないかと思います。
> > ソートは array_multisort($aThreadList->cmp_new, ... みたいな感じで。
> >
> >
> > ImageCache2の改良に注力してるので自分ではできませんが、
> > 時間があったらベンチ取ってもらえると嬉しいです。
> > # 上記コードも動作テストしてませんのであしからず。
> 






P2-php-dev メーリングリストの案内
Back to archive index