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:定数を定義したインターフェースを継承したインターフェースがある時,そのインターフェース名から定数が参照できない模様