話題の PHP 7 は本当にパフォーマンスが高いのか?



PHP のバージョンは現行の 5.6 から、開発中止になった PHP 6 を飛び越えて、2015年11月に PHP 7 にメジャーバージョンアップしました。

PHP 7 はそれまでのバージョンと比べて、非常にパフォーマンスが高いと評判で、その分処理速度の向上なども期待されます。

日本のレンタルサーバー業界で最初に PHP 7 を導入したエックスサーバーをはじめとして、現在すでに PHP 7を利用できるレンタルサーバーがいくつかありますので、各種のベンチマークテストを利用して、各サーバーで旧バージョンと PHP 7 のパフォーマンスを比較してみました。


PHP の 3つの バージョンによるベンチマークテスト

今回ベンチマークを実施したレンタルサーバーは、PHP 7 への切り替えが可能なエックスサーバー・heteml・お名前.comレンタルサーバー・クローバーの 4つです。

いずれも複数のバージョンに切り替えができたので、既存のバージョンでも複数試してみました。試した各社のバージョンは以下の通りです。

エックスサーバー heteml お名前.com クローバー
5.5.30 5.4.27 5.5.3 5.5.30
5.6.18 5.6.18 5.6.14 5.6.18
7.0.3 7.0.1 7.0.3 7.0.3

他のベンチマークでも利用したテスト用の WordPress サイトを用いて、上記の各バージョンのベンチマークテストを行ってみます。


PHP Benchmark

まずは、PHP Benchmark からです。

この PHP Benchmark は PHP の処理効率をチェックするためのスクリプトで、PHP を使用して簡単な計算などを行い、その処理にかかった時間を出力します。パフォーマンスが高いほうが処理時間が短いので、結果の数値がより小さいほうがパフォーマンスが高いと言えます。

PHP Benchmark の詳しい説明や他のサーバーへの実施結果は、こちらの記事を参照してください。

今回のいずれのサーバーにも特に注記はなかったのですが、ロリポップには PHP バージョンの切り替えに 5~10分くらいかかる旨の記載があったのでので、こちらでも同様に 10~15分くらいずつ空けて実行しました。

すべての結果を載せると長くなるので、各サーバーの「中間値の平均(異常値の可能性がある最大値と最小値を除いた平均)」の値をまとめた結果を表にしました。(まとめる関係でバージョン5.5となっていますが、hetemlだけは5.4です)


PHPのバージョン エックスサーバー heteml お名前.com クローバー 平均値
5.5.x 13 22 40 19 23.5
5.6.x 12 80 75 22 47.25
7.0.x 6 14 25 10 13.75
5.5.x 13 21 58 20 28
5.6.x 13 80 312 18 105.75
7.0.x 6 13 30 10 14.75



お名前.comのブレが大きかった関係で少々極端な数値も含まれていますが、結果としてはいずれも PHP 7 が高いパフォーマンスを示しました。

おおむね既存バージョンの半分くらいで処理を終えていますので、かなりの速さが実現できているように思います。


ApacheBench

次は ApacheBench です。

このベンチマークツールは、単一のファイルの処理に対する Webサーバーのパフォーマンスを測定します。様々な情報が出力されるのですが、その中で「1秒間に処理したリクエスト数(Requests per second)」を比較します。

パフォーマンスが高いほうが処理を多くできているため、結果の数字がより大きいほうがパフォーマンスが高いです。

ApacheBench の詳しい説明や他のサーバーへの実施結果は、こちらの記事を参照してください。

以下がその結果です。(ファイルは index.php を指定)


PHPのバージョン Xserver heteml お名前.com クローバー
5.5.x 68.53 25.35 6.46 36.19
5.6.x 68.37 14.49 4.59 31.98
7.0.x 76.75 21.02 6.55 38.95
5.5.x 67.39 25.97 14.69 39.05
5.6.x 68.78 13.75 6.61 35.56
7.0.x 79.33 20.92 8.85 49.91



こちらは結果がバラバラになってしまいました。特にお名前.com はすべての結果に統一感がありません。ApacheBench で Webサーバーのパフォーマンスを比較のテストでもそうでしたが、「Length」で処理の失敗が出ていたので、ちょっと除外してみたほうがいいかもしれません。

また、heteml は PHP 7 が 5.4 より若干低い値が出ています。heteml は PHP Benchmark でも 5.4 より 5.6 のほうがかなりパフォーマンスが悪かったのですが、こちらでも同じ傾向が出ました。

一方、エックスサーバーとクローバーのエックスサーバー系列では、いずれも安定して PHP 7 でよい結果が出ていました。

なお、こちらでも少し触れたのですが、PHPSpeed は古い関数などが使われている関係上、新しいバージョンの PHP には対応しておらず、今回は実施できませんでした。


PHP 7 のベンチマークのまとめ

以上のように、PHP Benchmark ではすべてのサーバーで PHP 7 がよりパフォーマンスが高く、ApacheBench では 4社中 2社で PHP 7 のほうがパフォーマンスが高いという結果がでました。

PHP 自体の処理だけではなく、データベースやその他の要因も含まれる ApacheBench のテストではサーバーによってブレが出てはいますが、PHP のみの基本的な処理を計測する PHP Benchmark ではすべてのサーバーでパフォーマンスの向上が見られたので、PHP 7 は確かにパフォーマンスが向上していると言っていいでしょう。

ただ、サーバーの環境にもよっては十分その力を生かせるとは限らないのかもしれませんので、パフォーマンスの高い PHP 7 の実力を生かすのであれば、高い安定性とコストパフォーマンスに優れたエックスサーバーや、同社系列のクローバーを利用するのがよさそうです。