2016年3月5日土曜日

Phalcon PHPとSails Node.jsのベンチマーク

引用元:



コメントをどうぞ


以前にフレームワーク対決:Node.js+SailsとPHP+PhalconのベンチマークとしてPhalconとSailsのベンチマークを行ったのですが、Apacheを利用した場合のPhalconの性能が全く違うので取り敢えずブログに書きます。

このエントリはPhalcon Adventカレンダー17日目として書きました。少し前に設定がおかしいことに気づいて非公開にしていた物を修正しています。

Phalcon PHPのベンチマーク

Apache 2.4 + PHP 5.5 + Phalcon 2.0をフレームワーク対決:Node.js+SailsとPHP+Phalconのベンチマークを書いた時と同じPC(Intel Core i7 4770S – 4 core / 8 thread、Fedora20 x86_64)でベンチマークを取得しました。

ベンチマークの違い

  • 前回
    • Phalcon 1.xとPHPビルトインWebサーバー
    • Sails プロセスマネージャー無し
  • 今回
    • Phalcon 2.0、Apache httpd  2.4(Fedora20のパッケージデフォルト設定、.htaccessのみ有効化)
    • SailsとPM2

前回はPHPのビルトインWebサーバーだったのでCPUコアを一つしか使いませんでしたが、今回はApache httpdなので4コア/8スレッドすべてを使うことになります。

Sailsも全てのコア+ハイパースレッドを利用しないと公平なベンチマークとは言えないのでPM2を使って、全コア、全スレッドを使えるようにしています。

ベンチマークしたページは”phalcon project phalcontest”と”phalcon project phalconmicrotest –type=micro”として新しく作ったプロジェクトをそのまま使いました。

Phalcon Simple:
Requests per second: 11737.06 [#/sec] (mean)
100% 3 (longest request)

Phalcon Micro :
Requests per second: 16720.24 [#/sec] (mean)
100% 14 (longest request)

 

Simpleでも1万1千リクエスト/秒、Microは1万6千リクエスト/秒を超た性能です。

昨日、全てのコアを使ったSailsのベンチマーク結果を取得しました。スクリプト系言語のフレームワークとしてはかなり高速です。

Sails (8 threads/4 cores)
 Requests per second: 1774.98 [#/sec] (mean)

しかし、結果は一目瞭然です。速度目的でNode.jsのSailsを利用する意味はありません。

Phalcon Simple: 
 Requests per second: 11737.06 [#/sec] (mean)
 100% 3 (longest request)

Phalcon Micro : 
 Requests per second: 16720.24 [#/sec] (mean)
 100% 14 (longest request)

文字通りPhalconの方が「桁違いに速い」結果となりました。 

 

まとめ

前回のベンチマークの時、Phalconの分が遅いな、とは感じていたのですがあまり気にしていませんでした。一番の原因はopcacheを入れ忘れていたことが原因だと思います。

ベンチマーク結果が揺れていますが、同じハードウェアでも微妙なソフトウェアバージョンの違いで性能が結構変わります。しかし、より速いことには変わりはありません。

フレームワークの基本性能でPhalconのライバルとなるものはスクリプト系言語ではなく、コンパイラ系言語のWebアプリケーションフレームワークになります。.NET CLI、Java VMは速いです。例えば、Scala言語(Java VM)のPlay2は同じマシン、同様のベンチマークで2万3千リクエスト/秒程度です。

実際にアプリケーションを作るとセッッション管理やデータベースアクセスなどのオーバーヘッドのため簡単に桁違いに遅くなります。反対にいうとこの部分を速くできればスクリプト系とは桁違いに速いWebサービスを作れることを意味します。通常のスクリプト系言語では.NET CLIやJava VMにどうしても歯が立ちませんが、Phalconなら勝負になります。PHP7になるとスクリプト部分も高速になるので、かなり良い勝負になるのではないでしょうか?どうしようもない部分はZephirでネイティブ化も比較的簡単です。

0 コメント:

コメントを投稿