読者です 読者をやめる 読者になる 読者になる

アラタナエンジニアブログ

aratana Engineer's Blog

これであなたもB-BOY!HIPHOP(HHVM)の扉を叩く!

HHVM

こんにちは!開発チームの川俣です。

HIPHOP好きですかー?
僕は好きです!
見た目はB-BOY要素ゼロの僕ですがラップを聴くときはいつもガチンコ。
「リリックの中身」「フローの心地よさ」「ライミングの巧みさ」の観点で評価しながら聴きます。
東と西で異なるサウンドやダンスのスタイルの違いを楽しむのもオススメです!

終わり。



嘘です(笑)
エンジニアブログなので今日は「HipHop Virtual Machine」いわゆるHHVMのさわりを紹介させてもらいます。
勘の良い方ならタイトルからお察し(むしろ今更かよ…とお思い)いただけたかと。


HHVMを簡単に説明するとFacebook社が開発したPHP実行環境の1つです。
今までのPHPの実行環境と比べると高速で動作することが特徴。
PHPの実行環境ではありますが同じくFacebook社の開発したプログラミング言語「Hack」の実行環境という側面の方が今は強いかもしれません。

インストール
まずはインストール!ってことで今回の環境から

ディストリビューション
CentOS 6.4

できればUbuntuDebianに最新パッケージを入れたかったのですが
今回手元にある環境がCentOSなのとPHP実行環境として動けば良いのでこのまま進めますー

そしてyumにてごにょごにょインストール
(インストール方法は色んなブログがヒットするので自分の環境に近いやり方を参考にしてください)

下記のコマンドでversionが出ればとりあえずインストール完了

hhvm --version
HipHop VM 3.2.0 (rel)
Compiler: tags/HHVM-3.2.0-0-g01228273b8cf709aacbd3df1c51b1e690ecebac8
Repo schema: c52ba40f4a246d35a88f1dfc1daf959851ced8aa


検証
そしてここからは「ウワサの真相」ということで検証に入ります。果たして本当に高速なのか!?

測定用のソースはこんな感じでシンプル。配列 $arrTemp に10万要素追加するだけの処理。
【test.php

<?php
$i = null;
$max = 100000;
$arrTemp = array();
$start = microtime(true)*1000;

for ($i = 0; $i < $max; $i++) {
    $arrTemp[] = $i;
}
$end = microtime(true)*1000;
var_dump($end - $start);
var_dump('end: '.$end);
var_dump('start: '.$start);

PHP実行結果--約19ミリ秒

php test.php
float(19.294921875)
end: 1428794394650.1
start: 1428794394630.8

■HHVM実行結果--約6ミリ秒

hhvm test.php
float(6.4521484375)
end: 1428794398703.1
start: 1428794398696.6

こいつは速い!計測サンプルが少なすぎるのはさておき曲のBPM(テンポ)でいえば3倍速!?
これは超高速ブレイクビーツではないか!?

とはいえおいしい話には裏があると勘ぐってしまうのが人間の性。
HHVMにすることで何かデメリットは無いのか!?ということで使用メモリはどんなもんでしょ?

使用メモリピーク時の値を出力するように変更

$usemem = 0;
$usemem = memory_get_peak_usage(true);
var_dump('usememory: '.$usemem);

PHP実行結果--約16MB

usememory: 15728640

■HHVM実行結果--約6MB

usememory: 5596614

3分の1とまでもいかないけどこれも良好な結果ですね!おみそれいたしました。


感想
これはなかなかイケてると思いました。
パフォーマンスは上げたいがPHPerの多いチームでは別言語だと学習コストが…
みたいな状況では選択肢の1つとして有りかなと思います。
実際に実行環境として使えるかどうかは当然もっと検証が必要になるとは思いますが
HHVM、なんならHack言語を使っての開発もやってみたいなーと思った次第です!