Webアプリケーションを実装する際に簡単に始められる言語のPHP。バージョンも7まで上がり、言語的にも充実しさらに速度面でも向上が図られてきました。そんなPHPでアプリケーション開発を始める際に悩むのが採用するフレームワーク。PHPって結構フレームワークの種類が豊富なんですよね。

 

最近よく聞くのがみんな大好きLaravel。新規でアプリケーション開発する際、一度はこれを採用するか議題に上がるんじゃないでしょうか?あとは日本だと何でしょう、CakePHPとかFuelPHP、ZendFrameworkとかでしょうか?

 

フレームワークの選定する条件は、フレームワーク自体のスペック(速度や機能)だったり今いるエンジニアの慣れだったり、はたまた増員する際に外からエンジニアが取りやすいかどうかだったりと複合的な条件を考える必要があるかと思います。ただ、明らかに古い仕様で最新のPSRに沿っていないとか、極端に遅いなどのデメリットを持ったフレームワークをあえて採用するのは避けたいですよね。

 

と言うことで、今回は Laravel 5、Slim 3、zend-expressive に絞ってフレームワークが持つ基本的な動作速度を検証します。ちなみに何故この3つなのかは流行りの PSR-7 middleware に対応してるから。では測定を開始します。

 

測定方法はシンプルに、composerでセットアップした後にルーティングでコントローラを指定、コントローラ内で簡単なJsonを生成・返却、これを REST API として30回呼び出し最も時間のかかった1件を除いた平均値で比較します。

 

Jsonデータは下記内容で生成。これをPHP 7.1.17のさくらのレンタルサーバ上で稼働。

 

['ack' => time()]

 

Framework Time 素PHPとの比較 備考
echo json_encode()のみの素PHP 126.63ミリ秒 1 header関数でapplication/json指定有り
Slim 3.10.0 150.09ミリ秒 1.19  
zend-expressive 3.0.2 216.58ミリ秒 1.71  
Laravel 5.6.23 266.33ミリ秒 2.10  

当然素のPHPで書いたものが一番速く、想定通り Laravel が一番遅い結果となりました。Laravel はバージョンが上がるにつれ大きなフレームワークになる傾向にあった為、フレームワーク自体を動かすコストが増加しています。Slim が優秀で素のPHPと比較しても2割弱の増加で留めていました。Slim と比較した Laravel は1.77倍。この数字をどう取るかは人それぞれかもしれません。

 

Framework Size
echo json_encode()のみの素PHP -
Slim 3.10.0 637KB
zend-expressive 3.0.2 10.7MB
Laravel 5.6.23 28.1MB

最後にcomposerでセットアップした直後のフレームワークのファイルサイズの大凡。Laravel は巨大ですよね。まぁフレームワークのファイルサイズは一度入れてしまえば今後大きく増加するところでもないので気にしなくてもいいかもしれませんが、大きいよりは小さい方がいいかなと。

 

はい、簡単に Larave、Slim3、zend-expressive の速度を比較してみました。実際のアプリケーションはデータアクセスやより複雑な処理を含むため必ずしも今回の結果の様な比率にならないかもしれません。が、フレームワークが持っている本幹の速度比の参考にはなると思っています。それでは皆さんのプロジェクトが炎上しないことを祈って。