ホームページ >バックエンド開発 >PHPチュートリアル >PHP フレームワークのパフォーマンス テスト report_php スキル

PHP フレームワークのパフォーマンス テスト report_php スキル

WBOY
WBOYオリジナル
2016-05-16 09:00:181991ブラウズ

php 開発者およびスタートアップ チームの技術開発者として、開発フレームワークを選択することは非常に難しいことです。

thinkphp では、訓練機関を卒業したばかりの開発者を採用することで始めることができますが、パフォーマンスとポストコードを切り離すのは頭の痛い問題です。ただし、多くの専門家がすでに道を切り開いているため、サードパーティ関数の多くは自分で記述する必要はありません。

laravel を使用すると、legend は非常に書きやすく、十分なスケーラビリティを備えていますが、学習コストが少し高く、若手開発者がフレームワークを学ぶのに半月も与えることはできません。そして、laravel のパフォーマンスがあまり良くなく、ドキュメントもそれほど充実していないことが世界中で暴露されていると言われています。

yii は構文がやや冗長で、フロントエンドとバックエンドのコードの分離が少し面倒ですが、パフォーマンスが非常に良く、すでに多くの国内大手企業で導入されています。予期せぬことが起こった場合でも、質問に答えてくれる専門家をすぐに見つけることができます。

単純なパフォーマンス評価を行うことをお勧めします。優れたパフォーマンスを備えたものを選択すると間違いはありません

パフォーマンステスト
テスト時期:2016年5月6日
テストツール: siege (mac システムの ab ではエラー pr_socket_recv: connection reverse bypeer (54) が常に発生するため、siege を選択しました)
テストマシン:macpro core i5プロセッサ/8gbメモリ/256gb ssdフラッシュメモリ
テスト環境:apache php5.6
フレームワークバージョン:thinkphp 3.2.3 laravel 5.2 yii2.0.5
テスト原理: 各テストサイクルは 5 回で、中程度のデータが取得されます
追記: すべてのプロジェクトはサブディレクトリに配置されます

結果の説明

transactions:        2119 hits 处理请求总数量
availability:        96.85 % 可用性
elapsed time:        9.74 secs 运行时间
data transferred:      1.31 mb 数据传输量
response time:        0.60 secs 响应时间
transaction rate:     217.56 trans/sec 每秒处理效率
throughput:        0.13 mb/sec 每秒处理数据
concurrency:       130.28 并发
successful transactions:    2162 成功的请求
failed transactions:       69 失败的请求
longest transaction:      2.85 最长的单个请求
shortest transaction:      0.01 最短的单个请求

テストを開始

コントローラを追加し、コントローラで helloworld を 10,000 回入力します

同時実行 50 サイクル 10 回:

最初に思いついたのは thinkphp でしたが、これは問題なさそうです

transactions:         500 hits
availability:       100.00 %
elapsed time:        2.81 secs
data transferred:      52.45 mb
response time:        0.26 secs
transaction rate:     177.94 trans/sec
throughput:        18.67 mb/sec
concurrency:        47.10
successful transactions:     500
failed transactions:        0
longest transaction:      0.48
shortest transaction:      0.03

それから laravle は、そうですね、少しがっかりしました

transactions:         500 hits
availability:       100.00 %
elapsed time:        13.33 secs
data transferred:      52.45 mb
response time:        1.27 secs
transaction rate:      37.51 trans/sec
throughput:        3.93 mb/sec
concurrency:        47.55
successful transactions:     500
failed transactions:        0
longest transaction:      3.64
shortest transaction:      0.07

最終ゲームの前は比較的楽観的だった yii

transactions:         500 hits
availability:       100.00 %
elapsed time:        4.84 secs
data transferred:      52.45 mb
response time:        0.46 secs
transaction rate:     103.31 trans/sec
throughput:        10.84 mb/sec
concurrency:        47.65
successful transactions:     500
failed transactions:        0
longest transaction:      0.88
shortest transaction:      0.04

200 個の同時ループを 10 回:

まず thinkphp です

transactions:        1977 hits
availability:        98.85 %
elapsed time:        10.03 secs
data transferred:     207.40 mb
response time:        0.95 secs
transaction rate:     197.11 trans/sec
throughput:        20.68 mb/sec
concurrency:       187.68
successful transactions:    1977
failed transactions:       23
longest transaction:      1.22
shortest transaction:      0.02

次に laravel

transactions:        1890 hits
availability:        94.50 %
elapsed time:        51.85 secs
data transferred:     198.27 mb
response time:        4.88 secs
transaction rate:      36.45 trans/sec
throughput:        3.82 mb/sec
concurrency:       178.00
successful transactions:    1890
failed transactions:       110
longest transaction:      26.01
shortest transaction:      0.07

ついにイーイ

transactions:        1996 hits
availability:        99.80 %
elapsed time:        18.95 secs
data transferred:     209.39 mb
response time:        1.79 secs
transaction rate:     105.33 trans/sec
throughput:        11.05 mb/sec
concurrency:       188.57
successful transactions:    1996
failed transactions:        4
longest transaction:      3.29
shortest transaction:      0.10

予想外なことに、最適化を行わないと、thinkphp が最も速く、yii がわずかに速く、laravel はふらふらしながらテストを終了しました。結果は少々予想外ですが、上記のテストは開発環境のみを表しており、以下ではオンライン環境をシミュレートするためにフレームワークを最適化します。

最適化フレームワーク

thinkphp:

app_debug改为false


laravel:

app_debug改为false
php artisan route:cache
php artisan optimize
php artisan config:cache
composer dumpautoload -o

イーイ:

yii_debug が false に変更されました
作曲家ダンプオートロード -o
同時実行 200 ループを 10 回:

thinkphp

transactions:        1655 hits
availability:        82.75 %
elapsed time:        8.21 secs
data transferred:     173.62 mb
response time:        0.69 secs
transaction rate:     201.58 trans/sec
throughput:        21.15 mb/sec
concurrency:       139.29
successful transactions:    1655
failed transactions:       345
longest transaction:      7.83
shortest transaction:      0.00

laravel:

transactions:        1520 hits
availability:        76.00 %
elapsed time:        34.95 secs
data transferred:     159.45 mb
response time:        3.15 secs
transaction rate:      43.49 trans/sec
throughput:        4.56 mb/sec
concurrency:       136.84
successful transactions:    1520
failed transactions:       480
longest transaction:      19.18
shortest transaction:      0.00

イーイ:

transactions:        1704 hits
availability:        85.20 %
elapsed time:        15.16 secs
data transferred:     178.76 mb
response time:        1.46 secs
transaction rate:     112.40 trans/sec
throughput:        11.79 mb/sec
concurrency:       164.21
successful transactions:    1704
failed transactions:       296
longest transaction:      9.04
shortest transaction:      0.00

奇妙なのは、フレームワークがデバッグ モードをオフにすると、失敗が増えることです。ただし、単純な最適化の後、laravel のパフォーマンスは大幅に向上していることは明らかですが、それでも他の 2 つのフレームワークよりも低いです。

結論

テスト中、私は落ち込んで、自分の世界観が崩壊寸前まで崩壊したように感じました。

thinkphp のパフォーマンスは yii の 2 倍、laravel のほぼ 4 倍です
yii のパフォーマンスは比較的平凡ですが、テストでは明らかに他の 2 つのフレームワークよりもリクエストの失敗が少ないことがわかります
laravel は依然としてエレガントですが、そのパフォーマンスには懸念があります。ネチズンの言葉で説明するのが適切です: 学ぶ者は生き、使う者は死ぬ

ついに

私のプロジェクトは最終的に自作フレームワークを使用して開発されました。コンポーザーの力のおかげで、開発プロセスは非常にスムーズに進みました。最後に、200 同時サイクルを 10 回実行する自作フレームワークのデータを添付しました。フレームワークはオープン ソースですが、更新は非常に忙しいです。github で ppphp を検索して、私と一緒にフレームワークを構築することを歓迎します。

Transactions:        1672 hits
Availability:        83.60 %
Elapsed time:        6.18 secs
Data transferred:     175.40 MB
Response time:        0.57 secs
Transaction rate:     270.55 trans/sec
Throughput:        28.38 MB/sec
Concurrency:       153.16
Successful transactions:    1672
Failed transactions:       328
Longest transaction:      4.57
Shortest transaction:      0.01

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。