ホームページ  >  記事  >  バックエンド開発  >  早速見てみましょう!主流の PHP フレームワークのパフォーマンスに関する非権威的なテスト

早速見てみましょう!主流の PHP フレームワークのパフォーマンスに関する非権威的なテスト

藏色散人
藏色散人転載
2020-07-29 13:20:453003ブラウズ

主流の PHP フレームワークのパフォーマンスに関する非権威テスト

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

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

Laravel

を使うと非常に書きやすく拡張性も十分だと言われていますが、学習コストが少し高いです。フレームワークを学ぶ月。そして、Laravel のパフォーマンスがあまり良くなく、ドキュメントも特に充実していないことが世界中の人々によって明らかになったと言われています。

Yii

を使用する場合、構文が少し面倒で、フロントエンドとバックエンドのコードを分離するのが少し面倒ですが、パフォーマンスは非常に優れており、すでに多くの国内大手企業で導入されており、事故が発生した場合でもすぐにダニエルを見つけて質問に答えることができます。 簡単な性能評価をした方が良いです。性能の良いものを選べば間違いありません

性能テスト

    テスト時間: 2016 年 5 月 06 日
  • テストツール:
  • siege

    (MAC システムの ab が常に表示されるため pr_socket_recv: ピアによる接続リセット ( 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
# でした。 ##ついに Yii です

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:

YII_DEBUG改为false
composer dumpautoload -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

Yii:

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 のパフォーマンスは比較的平凡ですが、テストでは Zhonghui他の 2 つのフレームワークよりもリクエストの失敗が少ないことが明らかにわかりました

  • Laravel は依然としてエレガントですが、そのパフォーマンスは心配です。ネチズンの言葉で説明する方が適切です

    学ぶ人はそれを使います 死ぬ人
  • 最後に

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

以上が早速見てみましょう!主流の PHP フレームワークのパフォーマンスに関する非権威的なテストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。