昨日?だったっけ、Adobe MAX で発表された Alchemy をいじってみたわけよ、C とか C++ で Flash Player 用のコードが書けるってやつ。FAQ によると AS3 の 10 倍ぐらい高速に動く可能性があるとかって。
環境構築は Getting Started 見ながらやれば問題ない。簡単。サンプルの stringecho も問題なく動いた。
んで次、いきなり Box2D (C++) やってみたね。これ速くなるとうれしい。ソースコード落としてきて 適当に Makefile 書き換えてコンパイル、ってするとー、
/Volumes/Data/Temp/alchemy/avm2-libc/include/c++/3.4/new:82: error: 'operator new' takes type 'size_t' ('long unsigned int') as first parameter
こんなのがたああくさん。該当するヘッダファイルのぞいてみたけど、どこをどう直せばいいかわらななくで断念。
次、ARToolKit (C)。これもねー、速くなると嬉しいねー。FLARToolKit は遅いからねぇ。こっちは swc 作るとこまではなんとかいけた。(いくつか手動でヘッダファイルを書き換えないとダメだけど。)
んで ARToolKit の関数を呼ぶとこまでたどりついたんだけどどうも内部の値がおかしい。arParamLoad できない(fread できない)から ByteArray 渡して AS3_ByteArray_readBytes で ARParam を作ってみたら endian が逆っぽい値になってる。これもどこ直せばいいかわからなくって断念。
つーわけで、成果ナシ。まぁ、まだバージョン 0.4 だしね。このへんの問題もそのうち解決するだろ。もうちょっとバージョンあがってからまた試そう。
ああそうだ、Alchemy どんだけ速いねんってことで軽くテスト (Graphics#lineTo を 100,000 回呼び出すとか) してみてたのだけど、C/C++ → AS3 の関数呼び出しがめちゃくちゃ遅い。AS3 → AS3 の 100 倍ぐらい時間かかってた。ので、やっぱ数値計算メインのことをやらせるのが吉な感じ。
・・・
フォーラムにあまりにも投稿がなくてわろた。
出たね。saqの言うとおり計算向けだね。コーデックとかパースとか。
C/C++で動くものが全てFlashで高速で動く、というのは幻想。現段階では無いと思うな。ネイティブに勝るものはないけど、頑張って欲しいよねー。
おー、makoche。
だよねー、画像処理系なら Pixel Bender のほうが速い場合も多そうだし、なかなか使いどころが難しい。なににしてももうちょい C/C++ と AS3 間のやりとりが高速にならないとせっかく速くなってる部分がスポイルされちゃう。
っていうか Alchemy の存在意義としては高速化というよりかは、今存在してる C/C++ のライブラリがある程度簡単な修正で Flash Player でも動かせちゃうってところのほうがデカいんだな、結局。