Xoops本家、ImpressCMS、XoopsCube、...様々xoopsの中で機能や使いやすさをおいといてどれが一番速いか検証してみました。
結論(一応):Xoops2.0.16a-JPが一番速く、XoopsCubeLegacyが一番遅い。果たしてこの結果が妥当かどうか...
■環境
・サーバ:Linux x32, Apache 2.2.8, MySQL 5.0.58, PHP 5.2.5
・テストPC: Windows XP SP2
・テストツール:
JMeter 2.3.1テストPCとサーバは同一のネットワークで外部からのアクセスを遮断している。
■Xoopsコア:
・2.0.16a-JP
・XCL 2.1.4
・2.0.18.1: 本家最新安定バージョン
・2.2.6: 本家2.2シリーズ最新バージョン
・2.3.0-alpha2: 本家最新開発バージョン
・Xoops Mexico: 本家2.0.16ベースのfork
・Simple-Xoops 0.8.2: 本家2.2.5ベースのfork
・ImpressCMS 1.0: 本家2.0.17ベースのfork
■Xoopsモジュール
上記コアすべてに以下のモジュールをインストールしいくつかのテストデータをphpmyadmin経由で一括insert
・Protector 3.16
・Altsys 0.57
・Xigg 1.0.0b1
・XSNS 1.1.0
・D3downloads 0.60d
・mylinks 1.1.0
■テスト方法
それぞれのサイトに対して以下の4つのHTTP request (method: GET)を発行しその平均応答時間(ms)を記録する。スレッド数:50、Ramp-up期間:300、繰返し回数:2
{XOOPS_URL}/index.php
{XOOPS_URL}/modules/Xigg/index.php/node/1
{XOOPS_URL}modules/files/index.php
{XOOPS_URL}/modules/mylinks/index.php
■結果
1) Xoops20JP 279 ms
2) Xoops Mexico 279 ms
3) Xoops20 296 ms
4) Xoops 2.3.0 307 ms
5) ImpressCMS 321 ms
6) Xoops2.2.6 326 ms
7) Simple-Xoops 349 ms
8) XoopsCube 397 ms
avtx30さん、こんにちは
詳細なレポートをありがとうございます。
非常に参考になりました。
私はX2(JP版)とXCLしか触っていないのですが、やはり速度に関しては体感としてXCLはだいぶ重いと感じています。
(設計思想や拡張性の高さなど、その他の部分に関しては素晴らしい!という感想以外にないのですが)
特に(これは私のPCのスペックやソフトなどの環境に固有する例外的な現象かもしれませんが)ローカルでの構築作業を行う場合に、X2だと2〜3秒程度で行われるページの読み込みにXCLだと10秒くらいかかってしまう場合もあり、何とかしたいなと感じています。
(もちろん公開サーバではさすがにそこまで極端ではないのですが)
個人的には昨年の
いつ頃Cubeを導入しますか?のスレッドがとても参考になったのですが、この中でのtohokuaikiさんのコメントにもあるように、もう少しコードを読み込んでXCLの全体像が掴めるようになったら、とにかく軽さに重点を置いてLegacyを改造する、といったことができればと思っています。
(現時点ではどのあたりがネックとなっているのか見当すらつかない程度のへっぽこなのですが…)
wahyu さんこんにちは
コメントありがとうございました。ずっと悩んでいました。HDがいいところまで来ているし機能的に他のXOOPSと比較ににならないほど素晴らしいXCLにそろそろスイッチしないと。。。ただ処理速度だけがどうしても気になって。。。
現時点では機能とスピードのバランスを考えて 「Xoops2.0.16a-JP + GIJOE氏のAltsys + BCOOLの
bc_admin01 + GIJOE氏のFCH」が最強な組み合わせではないかと思っています。同時にHDをいろいろいじってテストしようと考えています。
puchiban こんばんは
コメントそしてXdebugの情報ありがとうございました。時間があるときに見てみたいと思います。
引用:
ちなみにテンプレートやキャッシュは、どのような設定だったのでしょうか。
#smartyのキャッシュを使っていない場合は、smaryのpreg_matchとかの正規表現あたりに時間がかかっていることが多いと思います。
テンプレートやキャッシュはすべてデフォルト状態(設定なし=キャッシュなし)にしていました。対象コアにまったく同じ設定で同じモジュールやテストデータにて検証するのであれば相対的にどれが速いかわかると考えていました。
キャッシュ、PHPアクセレレータ、MySQLチューニングなどの効果については別途検証するつもりです。
avtx30 さん、とても参考になる検証、ありがとうございます。
もし、時間があればでけっこうですけど、
if ( function_exists('memory_get_usage') )
{
$usage = sprintf("%6.3f", memory_get_usage() / 1000000 );
echo 'memory usage : '.$usage.' MB';
}
このコードを書いたカスタムブロックを「PHP eval()」で保存し、トップページかどこか avtx30 さんの好きな場所に表示させた場合、どんな数字が出るか教えていただけませんか ?
こんにちは。
いつものことですが、ちょっと説明不足でした。
引用:
avtx30さんは書きました:
テンプレートやキャッシュはすべてデフォルト状態(設定なし=キャッシュなし)にしていました。対象コアにまったく同じ設定で同じモジュールやテストデータにて検証するのであれば相対的にどれが速いかわかると考えていました。
相対的にどれが速いかは、確かにその通りで、多分チューニングしても相対的なところは変わらない可能性は非常に高いと思います。機能が一番少ないであろうX2が、一番速いだろうと予想できます。
ただ、XCLが一番遅く、差があまりに激しいので、その差はキャッシュなどで結構縮まるのではないか? ということです。
利用しているテーマもX2と同じではなく、XCLの方が複雑なのではないでしょうか?
#XCLがメモリを食うのは、classが多かったり、ファイルが多かったりするため?
一般的には、高機能になったら、遅くなるものだとは思うので、同じ条件でしたら、X2と同じというわけにはいかないでしょうねぇ。
おぉ……xdebug がプロファイラを兼ねてるとは知りませんでした。
情報ありがとうございます。
ちなみにこのカキコミは gigamaster さんの blog でもネタにされていますね (^^)
http://gigamaster.blogspot.com/2008/04/xoops-and-legacy-performance-test.html