日記帳

日記です。

BeanShell で TestSprite.java

Java のコードをそのままインタープリトできるってことは sdl4gcj*1 の TestSprite.java もそのまま動くはず… と思ったけど微妙に修正が必要でした*2

% bsh-Interpreter TestSpriteForBeanShell.java
Screen is at 8 bits per pixel
Screen is in system memory
Sprite is in system memory
Sprite blit uses RLE acceleration
1.3300399011970359 frames per second

お… 遅いよっ!何のジョークだよ!? gcjコンパイルした場合に比べて約0.4%の性能!

比べるのもバカバカしいですけどC言語版,Java版,JavaScript版と比べると以下のような感じです.

testsprite.c 327.05
TestSprite.java(gcj コンパイル) 329.95
TestSprite.js(rhino インタープリタ) 127.51
TestSprite.js(jsc + gcjコンパイル) 162.48
TestSprite.bsh(BeanShellインタープリタ) 42.78
TestSpriteForBeanShell.java(BeanShellインタープリタ) 1.33

とりあえず結論,BeanShell で Java のコードをインタープリトするのは,すっごく,すっごく,すっご〜〜く遅い.やっぱり BeanShell は Shell らしく使えという事かもしれません…

*1:http://sourceforge.jp/projects/sdl4gcj/

*2:定数を定義したインターフェースを継承したインターフェースがある時,そのインターフェース名から定数が参照できない模様