次世代 PHP? PHP7? 〜 PHP Next Generation に触れてみる

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは、西山です。

PHP界隈では8月29日にPHP 5.6 が正式リリースされたようですね。

今回この記事でその PHP 5.6 について取り上げようと思い少し調べていたのですが、その過程でさらに次のバージョンである「PHPNG」というものを見つけました。

なんでも、Zend エンジンを改良し大幅な高速化がなされたということで、5.7 ではなく、次世代 (PHP Next Generation)と呼ばれているようです。

 PHP の公式サイトにこれについての情報が載っていたので、それに基づき簡単なベンチマークを取ってみました。

『PHP公式サイト: PHPNG』

 

次世代PHP?!PHP Next Generationのベンチマークテスト

PHPNGのインストール

ソースの取得

説明にある通り、Git リポジトリ(https://git.php.net/repository/php-src.git)からソースをクローンし、ブランチ phpng に切り替えます。

mkdir ~/tmp
cd ~/tmp
git clone git@git.php.net:php-src.git
cd php-src
git branch phpng origin/phpng
git checkout phpng

 

ビルド

つづいて、./buildconfでコンフィグスクリプト(?)を実行。さらに、configure を実行するのですが、この説明通りにやるにはいろいろなライブラリをあらかじめインストールしておく必要があります。

環境によって過不足はあるかもしれませんが、私の環境(Centos 6.5 minimal) では以下のパッケージのインストールが必要でした。

  • libxml-devel
  • openssl-devel
  • bzip2-devel
  • libcurl-devel
  • libjpeg-devel
  • libpng-devel
  • libXpm-devel
  • freetype-devel
  • t1lib-devel
  • gmp-devel
  • libmcrypt-devel
  • mysql-devel
  • aspell-devel
  • recode-devel

これらは全て yum install -y hogehoge-devel のように yum を使ってインストールしました。

 

これで、サイトの説明にある configure が通るようになります( –with-libdir=lib64 オプションの追加が必要でした。):

./configure \
–prefix=$HOME/tmp/usr \
–with-config-file-path=$HOME/tmp/usr/etc \
–enable-mbstring \
–enable-zip \
–enable-bcmath \
–enable-pcntl \
–enable-ftp \
–enable-exif \
–enable-calendar \
–enable-sysvmsg \
–enable-sysvsem \
–enable-sysvshm \
–enable-wddx \
–with-curl \
–with-mcrypt \
–with-iconv \
–with-gmp \
–with-pspell \
–with-gd \
–with-jpeg-dir=/usr \
–with-png-dir=/usr \
–with-zlib-dir=/usr \
–with-xpm-dir=/usr \
–with-freetype-dir=/usr \
–with-t1lib=/usr \
–enable-gd-native-ttf \
–enable-gd-jis-conv \
–with-openssl \
–with-mysql=/usr \
–with-pdo-mysql=/usr \
–with-gettext=/usr \
–with-zlib=/usr \
–with-bz2=/usr \
–with-recode=/usr \
–with-mysqli=/usr/bin/mysql_config
–with-libdir=lib64

 

それから、make コマンドでビルドします。

 

バージョン情報の確認

実行ファイルが生成されたのでバージョン情報を表示してみます。

phpng_version

 

バージョン番号に注目しましょう。5.6 の次だから 5.7 になると思いきや、一気に 7.0.0 という番号に飛んでいます。それだけ大きな更新だということなのでしょうね。
次世代 PHP は PHP 7 と呼ばれることになるのでしょうか。

 

 

ベンチマークの実行

通常はこの後 make installでパスの通ったディレクトリにインストールするのですが、今回はベンチマークスクリプトを実行するだけなので、ソースディレクトリ内に生成された実行ファイルを直接使うことにしました。

 

公式サイトでは4種類のベンチマークテストが紹介されていますが、とりあえず一つ目の、bench.php を実行してみました:

$ sapi/cli/php Zend/bench.php

結果は下のようになりました:

phpng_bench

どうやらこのベンチマークスクリプトを1.440秒で実行できたようです。

 

さて、比較対象がないことにはこれが一体どれくらい速いのか分かりませんね。そこで、正式リリースされたばかりの PHP 5.6 を同様にソースからビルドして、おなじスクリプトを実行してみました:

php56_bench

 

PHP 5.6 の場合は 2.072秒かかっていますので、PHPNG は5.6と比べて約31%の高速化がなされているという結果ですね!

 

 

まとめ

今回は、次世代PHP、PHPNG (PHP Next Generation) をさわってみました。

このバージョンでは実行速度の大幅な高速化がなされることがウリのようです。少し前に Hack / hhvm という言語・処理系が出ましたが、今回の高速化はこの hhvm に対抗するためだというような意見もチラッと見ました。
本家も速度で負けていられない、ってことでしょうか。

 

この記事での実験はソースに付属のベンチマークスクリプトの実行だけですが、実際に Web アプリケーションを動かしてみた時のベンチマークを取ってみるのも面白いと思います。
また、hhvm と比べてどのくらいのパフォーマンスを出せるのかということも気になる点かと思います。現在ネット上に出ている情報では条件次第で hhvm よりも速いというような結果もあるようです。

 

機会があればこの辺りの実験もやりたいところですが、今回はこの辺りで。

 

お読みいただきありがとうございました。

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*