Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HHVMを使ったwebアプリ開発 #Techlunch

HHVMを使ったwebアプリ開発 #Techlunch

2013/10/30 (水) @ Livesense TechLunch
発表者:渡邊 直登


Livesense Inc.

April 23, 2014


  1. HHVM を使ったweb アプリ開発 渡邊 直登 - システム開発部  メディア開発第1グルー プ

  2. None
  3. HHVM? HipHop Virtual Machine for PHP Facebook が開発したPHP のJIT コンパイラで、facebook

    でも2012 年から利用して いる つい最近、 バー ジョン2.2.0 がリリー スされた · · · 11/24
  4. HipHop? HipHop Developer(s) Facebook Initial release February 2, 2010 Stable

    release 3.0.0[1] / March 28, 2014 Development status Active Written in C++, C, PHP License Free software (PHP License) Website github.com/facebook/hhvm (http://github.com/facebook/hhvm) facebook.com/hphp (http://facebook.com/hphp) www.hhvm.com (http://www.hhvm.com) As of May 2013 HipHop for PHP From Wikipedia, the free encyclopedia HipHop for PHP (shortened as HipHop) describes a series of PHP execution engines and improvements created by Facebook. The original motivation of HipHop was to save resources on Facebook servers, given the large PHP codebase of facebook.com. As development of HipHop progressed, it was realised that HipHop could substantially increase the speed of PHP applications in general. Increases in web page generation throughput by factors of up to 6 have been observed over Zend PHP.[2][3][4][5][6] A stated goal of HipHop is to provide a high level of compatibility for Zend PHP, where most Zend‒based PHP programs run unmodified on HipHop.[4] HipHop was originally open‒sourced in early 2010.[7] The current version of HipHop, known as HHVM (HipHop Virtual Machine) was open‒sourced in late 2011.[8] HipHop is currently around 2.7 million lines[Note 1] of mostly C++, C and PHP source code and is distributed as open source and free software on GitHub (under the terms of version 3.01 of the PHP License). Contents 12/24
  5. 要約すると HipHop(HPHP) はPHP を抽象構文木(AST) ➡C++ ➡x64 バイナリコー ドな感じでコ ンパイルする 2008

    年から開発開始 2010 年にオー プンソー ス化 様々 な問題がでてくる 上記の問題を解決するために、2010 年からHipHop 仮想マシンの開発に着手し始 めた · · · · 全てのPHP 関数をサポー トしていない HPHPc を利用する場合は、PHP のソー スコー ドをコンパイルして実行すると いうステップが含まれるため、 手順が増える 開発環境ではHPHPi を使っていたが、 こちらはパフォー マンスが通常のZend Engine より良くない HPHPc やHPHPi をそれぞれ管理するメンテナンスコストの高さ - - - - · 現在ではPHP5.4 の関数を完全にサポー トしつつある 公開当初はパフォー マンス問題などがあったが、 現在は改善されつつある - - 13/24
  6. HHVM 2.2.0? Linux ディストリビュー ションとして、Ubuntu 12.04/ 13.04/13.10、Mint 15、 Debian 7、Fedora

    19 のそれぞれに対応したパッケー ジが用意された Phar ファイル対応、php.ini 対応、 多くのSPL クラスの追加と修正 主要FW への対応 · · · 14/24
  7. 導入のハー ドルがすごく下がった => 導入してみる

  8. インストー ル HHVM Pre built packages for Centos 6.4(unofficial) #

    Install epel repository sudo yum install http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm # download the hop5 repository configuration file cd /etc/yum.repos.d sudo wget http://www.hop5.in/yum/el6/hop5.repo # Install hhvm sudo yum install hiphop-php # hhvm hoge.php SH 16/24
  9. 簡単なテスト コマンドラインからバブルソー ト <?php $n = $argv[1]; $list = range(1,

    $n); $num = count($list); shuffle($list); for ($i = 0; $i < $num; $i++) { for ($j = $num-1; $j > $i; $j--) { if ($list[$j-1] > $list[$j]) { $tmp = $list[$j]; $list[$j] = $list[$j-1]; $list[$j-1] = $tmp; } } } PHP 17/24
  10. テストの結果 HHVM の方がピュアPHP よりも断然遅い。。 総数(N) time hhvm sort.php N time

    php bubble.php N 100 0m0.114s 0m0.022s 1000 0m0.301s 0m0.148s 10000 0m19.143s 0m13.164s 18/24
  11. HHVM をサー バー として立ち上げてテスト confg.hdf ファイル(apache でのhoge.conf) を準備 Server {

    Port = 8080 SourceRoot = /home/websites/hhvm } Eval { Jit = true } Log { Level = Error UseLogFile = true File = /home/websites/hhvm/log/error.log Access { * { File = /home/websites/hhvm/log/access.log Format = %h %l %u %t \"%r\" %>s %b } } } ... SH 19/24
  12. HHVM をサー バー として立ち上げてテスト # 一番簡単な立ち上げ方 hhvm -m server #

    deamonで立ち上げる hhvm -m server --config ~/tmp/techlunch_20131029/hhvm.hdf # curlで動作確認 curl localhost:8080/index.php SH 20/24
  13. テストの結果 HHVM の方がピュアPHP よりもはやい 総数 HHVM Normal 100 0.0018749237060547 s

    0.0022189617156982 s 1000 0.19065117835999 s 0.13713002204895 s 10000 19.215698957443 s 13.59685587883 s 21/24
  14. ベンチマー クの測定方法によるかも.. Translate: mindexception: out of context just a little

    cheat‒sheet « WRONG̲PARAM̲COUNT HipHop for PHP: Benchmark – Revenge of PHP » HipHop for PHP: Benchmark There is a well known benchmark on the shootout.alioth.debian.org website comparing the performance of many different programming languages. While I am far from discussing the superiority of one language over another, I realized that it would be interesting to perform a little speed test between a … PHP and PHP (compiled with the help of HipHop for PHP). 0 22/24
  15. まとめ 今回はweb アプリまでたどり着かなかった 導入は非常に簡単 コー ドを書く時にHipHop のことを意識しなくても良い 必ずしもパフォー マンスが上がるというわけではないっぽい 各種FW

    でのパフォー マンスも時間があるときに見てみたい 今は独自のサー バだが、2013 年末にはapache に対応する予定らしいので、 メデ ィアに組み込んでパフォー マンス比較することが出来るようになるかも 余談ですが、 今回のスライドはhtml5slides を利用しました · · · · · · · 23/24
  16. ご清聴ありがとうございました。