「PHP 7」登場。10年ぶりのメジャーバージョンアップで実行速度はPHP 5の2倍以上に、PHPの生みの親が語る。PHPカンファレンス2015(後編)

2015年11月4日

WordpressやFacebookなど、Webのさまざまなサービスで使われているPHP言語。約10年ぶりのメジャーバージョンアップとなる「PHP 7」がもうすぐ登場予定です。

PHP 7では互換性を維持しつつ、従来のPHP 5と比べて2倍以上の性能向上やメモリ使用量を低減するなど、大きな改善が実現されます。

(本記事は「「PHP 7」登場。10年ぶりのメジャーバージョンアップで実行速度はPHP 5の2倍以上に、PHPの生みの親が語る。PHPカンファレンス2015(前編)」の続きです。

Drupalでは実行速度は2倍、レイテンシは半分

ここでいくつかのベンチマークを紹介しましょう。ただし私の数字を信じることなく、自分でも確かめてください。

fig

試した環境はこれ。

fig

今年リリースされたDrupalの新しいバージョン。Drupal 8について。処理されたリクエストの数。PHP 5.4、5.5、5.6と比べるとPHP 7はほぼ倍になり、レイテンシはほぼ半分に下がっています。

HHVMよりも高速になっています。

fig

Wordpress 4.1.1。PHP 7はHHVMほど早くなっていないが、PHP 5.3とくらべると約3倍になっています。これはPHPのチームもHHVMのチームもWordpressをユースケースに使っていて、どちらのチームもWordpressをめぐって競争をしているのでHHVMに勝てなかったのです。

fig

とはいこれは少々問題ではあるので、どうやってさらに改善できるのか考えたところ、GCC Feedback-Directed Optimization(FDO)というGCCの最適化を使うと実行中のプロファイル情報を使って最適化できます。これで実行した結果はほとんどHHVM 3.7と変わらなくなりました。

もしもWordpressをヘビーに使っているユーザーなら、この最適化オプションを使ってみる価値はあるでしょう。

phpBB、MediaWiki、Geeklogなど

phpBBも早くなっています。

fig

MediaWiki。これはHHVMほど早くありませんでした。

fig

こうして見ると、HHVMが最適化対象としているWordpressやMediaWikiについてはHHVMの方が速いということが分かります。しかし最適化対象ではないものではPHP 7の方が速くなっています。

eコマースのプラットフォームであるOpencart。これはPHP 5と比べて2倍の性能と言うにはほど遠い値ですが、それはこのアプリケーションの実行時間のほとんどをデータベースアクセスに使っているためです。

fig

WardrobeCMS。これをサンプルとして選んだのは、モダンなPHPのスタイルとしてよく見られるSymfonyやLaravelなどを使っているためです。それらを使ったPHPアプリケーションでは、このレベルの改善が見られると期待していいでしょう。

fig

Geeklogでも、ほかのベンチマークで見られたのと同じような改善が見られます。

fig

Traq。これもPHP 7では高速化されています。たくさんのPHPアプリケーションを試しましたが。PHP 7で実行するときにコードの修正が必要だったのはこれ1つでした。Avalonというデータベースライブラリを使っていて、その一部をカーリープレイスで修正しました。

fig

つまり、いままでのすべてのPHPアプリケーションはまったく変更なしにPHP 7で動いたということです。そして既存のコードに問題があったとしても簡単に問題点を追跡してフィクスできます。

Cachetも2倍以上速くなっています。

fig

Moodleは米国と欧州で人気のある教育向けのパッケージです。MoodleはHHVMでは実行できませんでした。

fig

ぜひ試してバグレポートを

もうすぐPHP 7をリリースに当たり、多くの人に自分のコードをテストしていただき、なにか問題があれば連絡をください。リリースした後にたくさんのバグレポートが送られると、一気にチームが不機嫌なってしまいます(笑)。すぐにでもバグレポートをいただければ、にこにこと親切に対応できます。

テストはとても簡単にできるようになっています。Dockerイメージも、Vagrant Boxもあります。

fig

バグがもし見つからなければ、バグを直す手伝いをしてください。ランダムバグというボタンがありますので、それを押すと任意のバグが表示されます。直せるぞ、というのが出てきたらぜひおねがいします。

fig

会場から質問

──── PHP 7へマイグレーションするうえで気をつけるポイントがあれば教えてください。

Lerdorf氏 ちょっと答えにくい質問ですが、まずとにかくテストをしてください。そして正直に言うと、私もPHP 7を本番環境にすぐ使いたいとは思いません。ただし堅牢なコードになると思うので、PHP 7.1までは待たなくてもいいと考えています。

──── 日本語でPHPアプリケーションを開発するときは、マルチバイト用のmbが付く命令を使うことになりますが、いつかmbの付く命令と付かない命令は統合されるのでしょうか?

Lerdorf氏 いまのところ統合する予定はありません。新しい解決方法が見つかればそうなるかもしれませんが、PHP 7ではそうなっていません。

──── PHPにはたくさんのフレームワークがあります。PHP言語を作っている側として、現状に対して思っていることがあれば教えてください。

Lerdorf氏 それって結局、どのフレームワークがいいっていう質問じゃないの?(笑)

私はその質問に答える人としては適切ではありませんね。PHPはPHPで書かれているのではなくてCで書かれているので、私はふだん、C言語でプログラミングをしてCコンパイラとかgdbデバッガとかを使っているのです。私のPHPフレームワークに関する知識は、ベンチマークをして遅くなっている原因を調べるのか、といったことでしかありません。

それでもなにかアドバイスをするとすれば、モジュラー構造にして必要な機能を採用する、という方がいいと思います。

──── PHP 7を使いたいのですがPHP 5に依存した拡張ライブラリを使っています。PHP 5の拡張ライブラリをPHP 7用に変換するツールの予定はありますか?

Lerdorf氏 C言語で書かれた拡張ですよね? ああ、それは大変ですね。PHP 7では言語の互換性を維持しつつ、より高速に実行できるようにするため内部では多くの変更が行われています。ですのでC言語のAPIレベルでは非常に異なったものになっています。いままでの拡張ライブラリを7に合わせるのは大変だと思います。

ただ、こうした例はたくさんあるので、PHP 5用の拡張ライブラリでPHP 7用に移植されたものもたくさんあります。これらのパターンを見て移植するのがいいのではないでしょうか。

fig

資料「SPEEDING UP THE WEB WITH PHP 7

前編を見る:「PHP 7」登場。10年ぶりのメジャーバージョンアップで実行速度はPHP 5の2倍以上に、PHPの生みの親が語る。PHPカンファレンス2015(前編)

参考:PHP 5からPHP 7への移行で、Tumblrはレイテンシが半分、CPU負荷も半減。テストツールでPHP 7への移行に問題ないかをチェック
参考:「PHP 7」正式版が登場。PHPにとって10年ぶりのメジャーバージョンアップ。実行速度は旧バージョンの2倍以上

あわせて読みたい

プログラミング言語 PHP




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本