MATSUZAKIの日記 RSSフィード Twitter

Back to Peppermint.jp

2011-11-24

Js_of_ocamlでaobench

なんかAO Benchが続く。

画像処理をブラウザでやりたかったけれど、JavaScriptが1000行近くなったあたりで面倒になってきたので、http://d.hatena.ne.jp/camlspotter/20111015/1318664763を見てそのうち試そうと思ってたJs_of_ocamlを試してみた。

とりあえずざっくり実行速度見てみるために、http://d.hatena.ne.jp/h013/20110625/1309114394のaobenchを移植。

といっても基本的に変更なしでCanvas描画を付け加えるだけで動いた。つまらん。

http://peppermint.jp/temp/ao/

プロファイルとって見ると、Random.floatがOCamlでの実装をJSコンパイルしたものになって重い様子なのでMath.randomを呼ぶように変更した。

let rnd f:float =
  let r = Js.Unsafe.meth_call (Js.Unsafe.variable "Math") "random" [||] in
  r *. f

調子に乗って画像のfloat配列もFloat32Arrayに置き換えてみたけれど、AOのループの外でしかアクセスしないせいかあんまり影響なかった。

後は、普通にレイトレの処理に時間を食ってるようだ。vdotはインライン展開してくれてもいい気がするけど、そのままでもtracing treeで展開されるんだっけ。

ocamloptでコンパイルしたものに比べると半分くらいの速度だけど、バイトコード実行よりはだいぶ早い。

st1105st1105 2012/05/14 18:58 こんにちは、HSP初心者です。
HSPをDSで起動させたいのですが、OpenHSP for NDSの
使い方が分かりません。
詳しい使い方を教えていただけませんか?
(とある事情で返信が数日遅れるかもしれません。すみません)

MATSUZAKIMATSUZAKI 2012/05/14 23:35 DLDI対応の環境(2008年時点ではDeSmuME、DSTT等)がターゲットになっています。
それらの環境でルートフォルダにnds_2008_06_15/demoのなかにあるファイル全てを展開して起動してください。

HSPプログラム向けのAPIはdemo/nds.as demo/ndsGL.asで宣言しています。
NDSのグラフィックスは昨今のPCやスマートフォンと比べるとかなり特殊なのですが、特に賢い抽象化はしておらずNDS向けdevkitProが提供する関数への薄いラッパーになっています。
サンプルプログラムから類推するか、devkitProの資料を読んでみてください。

デモが動いたという状態で放置していますので、現状のデモの延長以上のことをやろうとするとHSPとC++とNDSアーキテクチャの全ての知識がある程度は必要になってしまいます。
初心者の方で単にプログラミング環境をお探しでしたらDSi以降が必要ですがプチコンもいいかもしれません。

st1105st1105 2012/05/15 16:35 ありがとうございます。起動できました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/MATSUZAKI/20111124/1322147757
リンク元