「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

このエントリーをはてなブックマークに追加
follow us in feedly

タグ : PHP



≫次の記事
[速報]マイクロソフトとレッドハットが戦略的提携。両社の統合チームがAzure上のRed Hat社Linuxサポート、.NET Coreに対応など
≪前の記事
「PHP 7」登場。10年ぶりのメジャーバージョンアップで実行速度はPHP 5の2倍以上に、PHPの生みの親が語る。PHPカンファレンス2015(前編)

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


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



Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus