PHP7.3はこれまでよりもさらにパフォーマンスが向上している

2018/11/22に[PHP7.3.0 RC6がリリース](http://php.net/archive/2018.php#id2018-11-22-1)されました。
[計画](https://wiki.php.net/todo/php73)ではこれが最後のRCで、次は2018/12/06にPHP7.3.0正式版がリリースされる予定です。

そのRC6のパフォーマンスを測定してる記事を見つけました。
以下は[PHP 7.3 Performance Benchmarks Are Looking Good Days Ahead Of Its Release](https://www.phoronix.com/scan.php?page=news_item&px=PHP-7.3-Performance-Benchmarks)の日本語訳です。


# PHP 7.3 Performance Benchmarks Are Looking Good Days Ahead Of Its Release

PHP7.3 RC6は、12月6日に正式リリースが予定されているPHP7.3の最終RC版です。
RC6での変更点は[こちら](http://news.php.net/php.internals/103479)に概略があります。

![01.jpg](https://qiita-image-store.s3.amazonaws.com/0/26088/a9a62d51-c1a5-8cdd-cc4e-5ce10dd29e9e.jpeg)
先日、PHP 5.5.38、PHP 5.6.38、PHP 7.0.32、PHP 7.1.24、PHP 7.2.12、そしてPHP 7.3.0-RC6でベンチマークを取ってみました。
全てのPHP5/7は同じ設定でビルドしています。
全てのテストはDell PowerEdge R7425 dual EPYC serverのUbuntu 18.10上で行いました。

![02.png](https://qiita-image-store.s3.amazonaws.com/0/26088/d3c0b1d4-86f3-1737-26ee-b1ede38cdcbd.png)
PHP7はパフォーマンスを進化させ続けているだけではなく、PHP7.3にはC言語の関数・変数・データ構造へアクセスするためのFFI(Foreign Function Interface)、プラットフォームに依存しない方法でネットワークインターフェイスへの接続、is_countable、GDのWebPサポート、新たなSQLiteサポート、ガベージコレクションの改良など多くの機能も含まれます。

![03.png](https://qiita-image-store.s3.amazonaws.com/0/26088/e4d74a11-da90-58f4-3828-a451a678e7c2.png)
PHP7.3は、PHPBenchのテストでPHP7.2より10%高速に動作しました。
7.0よりも31%高速で、PHP5に比べると3倍のスピードです。

![04.png](https://qiita-image-store.s3.amazonaws.com/0/26088/e0148d0c-e576-76f9-a685-875883c70f85.png)
![05.png](https://qiita-image-store.s3.amazonaws.com/0/26088/19851624-5675-2c5c-58fd-62a89625c9c2.png)
PHP Micro Benchmarksでは、PHP7.3では少しだけ早くなりました。

![06.png](https://qiita-image-store.s3.amazonaws.com/0/26088/ee0860e5-1d06-d421-b84c-da3ea36dcc64.png)
我々が独自に作成しているPhoronix Test Suiteのテストにおいては、PHP7.3は非常に優れた結果を残しました。
PHP7になって以降、最大の飛躍となっています。

![07.png](https://qiita-image-store.s3.amazonaws.com/0/26088/4f86682d-634c-8c72-8445-dbc7902879a8.png)
たくさんのファイルアクセスとXMLパースを行う"list suites"テストは、ほんのわずかに早くなりました。

![08.png](https://qiita-image-store.s3.amazonaws.com/0/26088/f6e1089c-c571-6c31-6f23-d1a993d6d1d6.png)
XMLをパースしてDOMを構築しSVGを生成する処理は、PHP7.3で劇的に高速化しました。

![09.png](https://qiita-image-store.s3.amazonaws.com/0/26088/28d1aef1-8c2f-7fbd-7447-92831a7bf51c.png)
マージを行うテストは順当に少しだけ早くなりました。

全体として、PHP7.3は継続的なパフォーマンス改善がなされ、またその他の新規追加機能のために、注目すべき価値のある重要なアップデートといえます。

# コメント欄

「PHP開発者の仕事は素晴らしい！ありがとう！XAMPPもすぐに追随してくれると嬉しいな。」
「いいことだ。もっと前に改善してくれればもっとよかったけど。PHP7.4で[Preloading](https://qiita.com/rana_kualu/items/afe544b0f5680e81fabc)」が入るからそっちにも期待。」
「うちも[ベンチマーク比較](https://community.centminmod.com/threads/16090/)やってみた。」
「PHPの進化はめざましい。いまだにGlobalsを使っていてストアドプロシージャを使ってない開発者は処すべき。」
「ストアドプロシージャ？ORM使ってないのかORM使うべき。」
以降なぜかORM論争に入る。


# 感想

PHPでFFIって[エクステンション](https://github.com/dstogov/php-ffi)はあるんだけど、7.3で[ネイティブ対応](https://wiki.php.net/rfc/php8)してたっけ？

独自のテストスイートというのは[こちら](http://www.phoronix-test-suite.com/)のようです。
記事中には具体的なコードが全然出てこないし、どのテストを行ったか、あと結果の数値が何なのかとかそこらへんがわかりにくいので、詳細と[ソースコード](https://github.com/phoronix-test-suite/phoronix-test-suite)へのポインタなどをつけてくれるとありがたいのですが。
それにPHPBenchやPHP Micro Benchmarksへのリンクもないですし。

しかし詳細はともかく、PHP5より7.0、7.0より7.1、7.1より7.2、7.2より7.3が着実に早くなってきていることは間違いないようです。
そもそもPHP5から7に差し替えるだけで倍以上早くなるので、未だにPHP5を使っているようであれば速やかに移行しましょう。
5系最後の5.6も2018/12/31に[セキュリティサポートが終了](http://php.net/supported-versions.php)することですし。

ところでこの記事が何故か[本家slashdot](https://developers.slashdot.org/story/18/11/24/2352226/php-73-performance-benchmarks-are-looking-good-days-ahead-of-its-release)のストーリーになってたのですが、コメント欄が醜いことになっていました。
もしかして本家slashdotの治安って日本語版sradよりアレなんじゃなかろうか。