2006/12/27

Roadsend Compiler for PHP

phpのコンパイラ作ろうと思ったらfreeのやつがあった。

http://www.roadsend.com/home/index.php?SMC=1&pageID=compiler

以下使ってみた感じ。

  • cliアプリ、fastcgiアプリを生成可能
  • 簡単なコードしか試してないけど、一応コンパイルできた
  • 結構高速
    • 単純なループで関数呼び出しとインクリメントを繰り返したら3倍くらい速い。
  • eval利用可能
  • includeも利用可能
    • コンパイルされていないphpを実行すると泣くほど遅い。
  • 同じディレクトリのphpファイルもコンパイルしてくれる。
    • 同じディレクトリにないphpファイルで定義されている関数を呼ぶとコンパイルでこける。
    • コンパイルされていないphpファイルをincludeすると死ぬほど遅い。ざっと3倍遅い。コンパイルされているphpに比べて9倍。
  • count()を呼ぶとコンパイルできない
  • ライブラリとしてリンク可能
    • zend_extensionとかではない
    • 変な名前にドングルされているので、普通のphpやCのコードから呼び出しはできなさそう?
countが使えなかったり、別ファイルの関数を呼べなかったりと色々と問題は盛りだくさんである。count()呼び出した時にgccでエラーが出るので、多分厳密にはコンパイラではなく、トランスレータ。
別にスンタドアローンの実行コードはいらねぇから、phpからネイティヴのzend extensionのコード吐いてくれないかね?

0 件のコメント: