フレームワーク対決:Node.js+SailsとPHP+Phalconのベンチマーク

(更新日: 2013/11/28)

Node.jsは速いと言われています。Node.jsのMVCフレームワークであるSailsPHP最速フレームワークであるPhalconとの性能を比較しました。

テスト環境はFedora19 x86_64です。Node.jsとPHPはFedora付属の物を使い予めインストールされているものとします。性能比較は公正を期すためにシングルプロセスで行います。

Node.jsは1つのコアしか使いません。Node.jsも複数のインスタンスを実行すればマルチコアも利用可能ですが、PHP+Apacheを利用するとホストのコア全部を使ってしまいます。あまりに不公平なのでシングルプロセス(PHPのビルトインWebサーバー)でのベンチマークにしました。

SailsとPhalconのインストール

まずSailsのインストールから起動までのコマンドです。

これで http://127.0.0.1:1337 にアクセスするとインストール直後のページが表示されます。

次にPhalconのインストールです。

これで http://127.0.0.1:8888 にアクセスするとインストール直後のページが表示されます。

どちらもインストールは簡単に行えます。(自分で作ったPhalcon RPMパッケージを使っているので反則?!)

ベンチマークするページ

SailsとPhalconのデフォルトのindexページ内容は異なります。同じにしないと公正ではないので内容を

に変更します。それぞれのプロジェクトのルートディレクトリから編集します。

Sailsのインデックスファイルの編集

Phalconのインデックスファイルの編集

ベンチマーク

別のマシンからベンチマークした方が良いのですが、簡易ベンチマークということで同じホストからabコマンドでHello Worldページにアクセスします。ウォームアップする為に2回目のabコマンドの結果を採用します。

Sailsのベンチマーク

Phalconのベンチマーク

ベンチマーク結果

Sails
Requests per second: 174.89 [#/sec] (mean)
100% 101 (longest request)

Phalcon
Requests per second: 946.40 [#/sec] (mean)
100% 16 (longest request)

PhalconはSailsの5倍以上高速で、レイテンシーも大幅に小さい事が分かります。

ただし、SailsはViewテンプレートを”Hello World”だけにしても自動的にかなりの量のテキストを追加しています。これはレイテンシー・パフォーマンスに影響していると思われますが、ベンチマーク結果に大きな影響はないでしょう。

Sailsが極端に遅いのか?というとPHPの比較的大きなフレームワークならこの程度の速さです。極端に遅いとは言えません。Phalconが速いだけです。

まとめ

Node.jsが速いのか?というと普通にMVCフレームワークを使ってアプリを作れば、PHPでMVCフレームワークを使うアプリとそれほど変わらないでしょう。

Node.jsも複数のインスタンスを作ってマルチコアを使う事もできますが、PHPの場合Apache/NginxなどのWebサーバーを利用すれば普通にマルチコアを使い切ります。シングルコア対マルチコアになれば更に差が開くのは言うまでもありません。

Node.jsが遅いのでしょうか?Node.jsが遅い訳ではありません。最速PHPフレームワークのPhalconには歯が立たないだけと言えるでしょう。

LL系の最速MVCフレームワークが必要な場合、圧倒的に速いPhalconは魅力的な選択肢になると思います。

FacebookにPhalconのページを作っています。よろしければ「いいね!」をお願いします。「いいね!」をして頂くとFalconのページが更新された場合に自分のページに掲載されます。

追記:
データ量が違うので速度がかなり変わる?と考える方も居ると思います。Sailsが出力したコンテンツと同じデータをindex.voltに貼り付けた結果は以下の通りです。

ネットワークやCPUがボトルネックになっていないので予想通り、ほとんど変わっていません。

Comments

comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です