PHPをC++に変換して高速化する「HipHop for PHP」

PHPもC++も使うプログラマーにとっては凄い興味が沸きます。確かにPHPはスクリプト言語という宿命がある限り、キャッシュしようが限界がありますよね。だからといってC++で再コーディングするにも時間的なコストを考えると手段から外される事も多い。

FacebookがPHPをC++に変換し高速化する「HipHop for PHP」を公開したようです | ke-tai.org

http://ke-tai.org/blog/2010/02/05/hiphopphp/

PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開 : candycane development blog
 PHPがウェブアプリ作る言語としてオリジナルで便利な関数が揃っている為プログラマーを教育しやすい初心者にも敷居が低いのは良く分かりますが、元々HTMLにSSIの代わりに埋め込んで使うような言語でJavaScriptとの違いはサーバーで動作させるか、クライアントで動作させるかといったものなのに、Smartyのようなテンプレートエンジンやその他多機能なフレームワークなど、折角Apacheモジュールとして高速動作させているのにパフォーマンスに対して本末転倒なライブラリを実装する開発のほうが標準的になっている事がとても嘆かわしいですね。
 そういったPHPを遅くするライブラリどもを全てエクステンションに追い出せるならサーバーコスト(特にCPU周り)の節約に貢献できそうです。あとバッチ処理とか単体で変換できるとバッチ付き抜け防止に役立ちそうですね。(そもそもPHPでバッチ組むなというのもありますがシェルプログラミングスキルがあまり無いのでほんのちょっとでも複雑になると他のスクリプト言語に逃げてしまいます。。。Perl使ってもOKならPHP選ぶ前に使ってます。)
 RubyはPerlの文字化けに苦しんでいた10年前は興味ありましたが未だに手を出してないなぁ。。。Pythonはあまり興味なし。(多分仕事で使うことがなさそうだから)。Javaはどうなんでしょう?アプレットは遊びで作ってましたが、サーブレットはコンパイル済みプログラムをシステムに反映するのにApache、tomcatを再起動なんて仕様がデバッグコストを上げる原因にもなるし、無停止サービスを目指すシステムから見れば「ナンセンス」なのでまずサービス稼動したままリロードできるようにしないと大変ですよね。

 

postgreSQLをC++から利用する

この前、MySQLにて二重接続を行いましたがそれのpostgreSQL版を作成し今度はフィールド名にて値の取得を行ってみました。ソースは以下の通り、動作確認はFreeBSD6.0です。

pg_cpp20060611-1

今度はstd::mapを使ってMySQL版との共通化を考えよう…。

C++でMySQLを操作

ここまで来ると最初からDBI使ったほうが簡単な気がしますが、ラッパーの繰り返しをする前に基礎理解の為に自作。

C++版のソースコードはこちらから(FreeBSDで確認)

mysql_cxx