日頃の行い

個人的な日頃の行いをつらつら書いてます\\\\ ٩( 'ω' )و ////

LumenというLaravel製マイクロフレームワーク(?)をSilexとSlimと比較してみた

LumenというLaravelのコンポーネントを利用したフレームワークが出たので、ちょっと触ってみました。

lumen.laravel.com

LumenはSilexやSlimに比べてREQUESTS PER SECONDの値が高いらしいですね。
なので、今回はsiegeコマンドを利用してそれらのベンチを取ってみました。
利用したレポジトリはこちらです。

github.com

※ベンチそんな取ったことないんで分析甘いかもしれませんがご了承いただきたいです。

Slim
Slim Framework

Silex
Homepage - Silex - The PHP micro-framework based on Symfony2 Components

流れ

  1. それぞれインストール
  2. 環境について
  3. siegeコマンド実行
  4. 所感

1.それぞれインストール

一応マイクロフレームワークらしいですが、
インストールはどれくらいかかるのでしょうか。
標準出力をそのままコピってみました。
※Lumenは composer create-project laravel/lumen --prefer-distを行ったあと、
vendorを消して、composer installしました。

Lumenインストール
https://gist.github.com/tarata/e51138cc3d1575bf034f

Silex インストール
https://gist.github.com/tarata/555b27d621a1c91a7606

Slim インストール
https://gist.github.com/tarata/63c84364dc388dadcb6f

Lumen長っ!
Slim短っ!!
これほんとにマイクロなんだろうか。

2.環境について

テスト環境についてです。
個人のさくらVPS上に乗っけて、PHPのビルトインサーバでそれぞれ起動してsiegeにかけてみました。
Lumenはデフォルトのwelcomeページ
SilexはHello Silexという文字のみ
SlimもHello Slimという文字のみ

siegeコマンドについてはこちらなどを参考に・・・

qiita.com

さくらVPS

  • メモリ 1 GB
  • ディスクHDD 100 GB
  • CPU 2コア

PHP

$php -v
PHP 5.4.39 (cli) (built: Mar 20 2015 08:10:43)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
    with Xdebug v2.3.2, Copyright (c) 2002-2015, by Derick Rethans

※ siegeの対象にlocalhostにsiegeがなぜか使えなかったので
 /etc/hostsに下記のように書いて対応

127.0.0.1	silex.local.com
127.0.0.1	slim.local.com
127.0.0.1	lumen.local.com

ちなみにこんなエラーが出ました。

$siege -g http://localhost:8000/
[error] socket: -928823552 connection refused.: Connection refused

3.siege実行

Transaction rateの値をとりあえず見ていこうかと思います。

Lumen

$siege -c 10 -t10s http://lumen.local.com:8000/

Transactions:		         181 hits
Availability:		      100.00 %
Elapsed time:		        9.20 secs
Data transferred:	        0.25 MB
Response time:		        0.04 secs
Transaction rate:	       19.67 trans/sec
Throughput:		        0.03 MB/sec
Concurrency:		        0.86
Successful transactions:         181
Failed transactions:	           0
Longest transaction:	        0.13
Shortest transaction:	        0.01

$siege -c 1000 -t10s http://lumen.local.com:8000/

Transactions:		         608 hits
Availability:		      100.00 %
Elapsed time:		        9.18 secs
Data transferred:	        0.82 MB
Response time:		        2.15 secs
Transaction rate:	       66.23 trans/sec
Throughput:		        0.09 MB/sec
Concurrency:		      142.45
Successful transactions:         608
Failed transactions:	           0
Longest transaction:	        8.99
Shortest transaction:	        0.00

なるほどなるほどー
1個目なのでよくわからないですね。

Silex

$siege -c 10 -t10s http://silex.local.com:8000/

Transactions:		         155 hits
Availability:		      100.00 %
Elapsed time:		        9.52 secs
Data transferred:	        0.00 MB
Response time:		        0.11 secs
Transaction rate:	       16.28 trans/sec
Throughput:		        0.00 MB/sec
Concurrency:		        1.79
Successful transactions:         155
Failed transactions:	           0
Longest transaction:	        0.42
Shortest transaction:	        0.03

$siege -c 1000 -t10s http://silex.local.com:8000/

Transactions:		         254 hits
Availability:		      100.00 %
Elapsed time:		        9.90 secs
Data transferred:	        0.00 MB
Response time:		        4.09 secs
Transaction rate:	       25.66 trans/sec
Throughput:		        0.00 MB/sec
Concurrency:		      104.92
Successful transactions:         254
Failed transactions:	           0
Longest transaction:	        9.32
Shortest transaction:	        0.00

お、Silexちょっと負けましたね。

Slim

$siege -c 10 -t10s http://slim.local.com:8000/

Transactions:		         182 hits
Availability:		      100.00 %
Elapsed time:		        9.63 secs
Data transferred:	        0.00 MB
Response time:		        0.04 secs
Transaction rate:	       18.90 trans/sec
Throughput:		        0.00 MB/sec
Concurrency:		        0.72
Successful transactions:         182
Failed transactions:	           0
Longest transaction:	        0.15
Shortest transaction:	        0.01

$siege -c 1000 -t10s http://slim.local.com:8000/
Transactions:		         585 hits
Availability:		      100.00 %
Elapsed time:		        9.42 secs
Data transferred:	        0.01 MB
Response time:		        2.18 secs
Transaction rate:	       62.10 trans/sec
Throughput:		        0.00 MB/sec
Concurrency:		      135.40
Successful transactions:         585
Failed transactions:	           0
Longest transaction:	        8.75
Shortest transaction:	        0.02

Slimはやはり特になにも入ってないので強いですね。

concurrency 10の時

Lumen 19.67 trans/sec
Silex 16.28 trans/sec
Slim 18.90 trans/sec

concurrency 1000の時

Lumen 66.23 trans/sec
Silex 25.66 trans/sec
Slim 62.10 trans/sec


Silexがダメなように見える・・・w
確かにLumen多くさばけそうですね。

4. 所感

なんとなく試してみたかったので、ベンチ取ってみました。
回数そんな多くやってないので、正しいものがとれたかどうか確実ではないですが、ほとんど何も入っていないSlimと近いスピードなので、Lumenのホームページ上で言ってることは本当なのかなと思います。
インストール時に色んな物が突っ込まれていたので、本当にマイクロフレームワークなのかちょっとわからないですが、なにかあるときはちょっと触ってみようかなと思います。