Hiroaki Sakuma
hiroa****@sakum*****
2005年 3月 25日 (金) 11:08:53 JST
佐久間です. > > # AutoLoaderで動かすカスタマイズは簡単です > 長年Perlと付き合ってきましたが、こういったものを読むと本当に勉強になります。 > AutoLoaderというものがあるのですね。 > 速度向上が望めるのであれば、多少のプログラムのカスタマイズもすべきだと考 > えています。 > 逆にAutoLoaderを用いるデメリットというものはどういったものがあるのでしょう > か。 試しに,どれだけ簡単に速度向上が望めるか,テストしてみました. なお,この実験はあまり細かいことは気にしてないので,そのまま鵜呑みにしないで ください. AutoLoaderのデメリットですが,FSWikiのような大規模なソフトウェアで,ファイル のIOがネックになっている場合以外では,反対に処理が多くなって速度が低下する恐 れがあります. また,せっかくコンパイルの作業の必要がないPerlなのに,ソースコードを書き換え る度にautosplit(AutoLoaderの下準備)が必要となり,手間が掛かります. ユーザサイドから見ると,モジュールがファイル単体ではなくなるため,バグなどが あったときに原因をつかみ難くなります. ■実験内容 FSWiki(デフォルトの状態)と,lib/Wiki.pmをAutoLoader化したものを実際に動作さ せ,ベンチマークツールを使って処理速度の差を確認する. ■実験環境 CPU : intel PentiumM 725 RAM : PC3200 1,024MB HDD : HITACHI 7K250(SATA) 160GB x 2(RAID1) OS : FreeBSD5.3-RELEASE-p5(オリジナルカーネル) Perl : v5.8.6 built for i386-freebsd-64int FSWiki : 3.5.7 Apache : 2.0.53(mpm=worker) ■準備 fswiki_default(デフォルトのまま)と,fswiki_ai(AutoLoader化)したものを用意す る. $ fetch "http://osdn.dl.sourceforge.jp/fswiki/13351/wiki3_5_7.zip" $ unzip wiki3_5_7.zip $ mv wiki3_5_7 fswiki_default $ unzip wiki3_5_7.zip $ mv wiki3_5_7 fswiki_ai □デフォルト $ cd fswiki_default $ chmod 700 wiki.cgi $ mkdir log □AutoLoader化 $ cd fswiki_ai $ chmod 700 wiki.cgi $ mkdir log 以下AutoLoader化作業(差異は添付のパッチファイル参照) ■測定 同一マシン上で,ab(Apache Bench)にて,以下オプションで実行. # ab -c 100 -n 1000 (対象URL) ■結果 □デフォルト Concurrency Level: 100 Time taken for tests: 0.724418 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Non-2xx responses: 1049 Total transferred: 610518 bytes HTML transferred: 354562 bytes Requests per second: 1380.42 [#/sec] (mean) Time per request: 72.442 [ms] (mean) Time per request: 0.724 [ms] (mean, across all concurrent requests) Transfer rate: 822.73 [Kbytes/sec] received □AutoLoader化 Concurrency Level: 100 Time taken for tests: 0.364522 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Non-2xx responses: 1049 Total transferred: 600028 bytes HTML transferred: 349317 bytes Requests per second: 2743.32 [#/sec] (mean) Time per request: 36.452 [ms] (mean) Time per request: 0.365 [ms] (mean, across all concurrent requests) Transfer rate: 1604.84 [Kbytes/sec] received ===================== Sakuma,Hiroaki hiroa****@sakum***** -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: autoloader.diff.gz 型: application/x-gzip サイズ: 10179 バイト 説明: 無しDownload