<< index

HSPLet 3.0 検証

S.Programs NET :: HSPLet 3.0 検証

HSPLet はブラウザで動く HSP です。

HSPLet 3.0 は、Yuki さんが開発されている、HSP 中間コードを Java アプレットに変換するソフトです。
これを使用すれば、HSP で書いたスクリプトを、Web ブラウザ上で Java アプレットとして動作させることが可能です。
Java アプレットですから、Windows 以外の環境でも実行可能となります。

HSPLet の開発元
Group Finity Web Site
http://www.group-finity.com/

履歴
2005/12/26 開発元サイト復活につき HSPLet 再頒布終了
2005/12/22 HSPLet 3.0 beta6 再頒布
2005/12/20 勝手にページをアップ。

とりあえず実行できるように

もしブラウザに Java プラグインがインストールされていない場合は、JRE 1.5 をインストールしてください。


↓ここでアプレットが実行されていれば、準備ができています。

Java Plugin is not installed.

コンパイル・コンパイル・コンパイル → 実行

HSPLet 3.0 の動作のしくみは、旧版の HSP 2.x 用の HSPLet とは大きく異なっています。

旧 HSPLet (for HSP 2.x) は、Java コードで HSP 中間コード (.ax) を解釈し実行するインタープリタ方式をとっていました。
このため、本家インタープリタと比較すると、Java 製インタープリタ vs EXE インタープリタという試合になり、実行速度では不利なものでした。

しかし、HSPLet 3.0 では、事前に ax を Java バイトコードに変換する仕組みになっています。

    HSP スクリプト (.hsp)

        HSP 3.0 コンパイラ

    HSP 中間コード (.ax) → HSP インタープリタで実行可能


        ↓HSPLet 3.0 コンパイラ

    Java バイトコード (.jar アーカイブ)


        Java VM (JIT コンパイラ)

    CPU ネイティブコード (実行)


HSP コードは、最終的には Java VM により CPU ネイティブコードに変換されて動作することになるため、演算速度では本家 HSP インタープリタよりも高速になります。

具体的にどのくらい速いの?

というわけで、本家 HSP 3.0 インタープリタと HSPLet 3.0 との実行速度を実際に比較します。ここでは、傾向の異なる二種類のベンチマークスクリプトを使用します。

(注意)
このベンチマークテストは、HSPLet 3.0 のベータバージョン (beta 6) で実行しています。正式版 HSPLet とは性能が違う可能性がありますので、ここでの結果は参考値にとどめてください。


◆ 素数列挙ベンチ

まず、エラトステネスの篩いを用いた素数列挙スクリプトで、100 万までの素数を列挙するのにかかる時間を測定します。このテストでは、配列アクセスの速度が重要となります。
(時間計測のため Win32API の timeGetTime() を使っていますが、この API は HSPLet にも実装されているため、そのまま使用できます。)

素数列挙ベンチを開く (スクリプト付き)

このテストスクリプトの実行結果は、Pentium 4 2.6CGHz (J2SE 1.5 JRE) のマシンだと、HSP インタープリタが 1609ms, HSPLet が 656ms でした。Athlon 64 2.2GHz の環境では、HSP インタープリタが 1265ms, HSPLet が 422ms でした。
HSPLet のほうが、2.4 〜 3.0 倍高速に実行されています。


◆ 画面描画ベンチ

次は、描画命令 line, boxf, circle, gcopy, gsquare を使用したベンチマークテストです。HSP インタープリタ、もしくは HSPLet ライブラリ内部の描画プログラムの実行速度が試されます。

画面描画ベンチを開く (スクリプト付き)

このテストスクリプトの実行結果は、Pentium 4 2.6CGHz のマシンで、HSP インタープリタが 297ms, HSPLet が 1281ms でした。Athlon 64 2.2GHz の環境では、HSP インタープリタが 187ms, HSPLet が 938ms でした。
画面描画のベンチマークでは HSPLet は HSP インタープリタにはかなわず、HSPLet の実行速度は HSP インタープリタの 1/5.0 〜 1/4.3 となってしまいました。gsquare の実行速度の差は特に顕著で、スコア差の多くの部分を占めています。


このように、HSPLet 3.0 の実行速度には、はっきりとした得手不得手があることがわかります。
描画処理が大きなウェイトを占めるゲームプログラムなどでは高速化が難しいかもしれませんが、描画処理を簡略化する代わりに内部 AI を高度化するなど、HSPLet が得意とする処理に重点を置けば、本家 HSP インタープリタに迫る速度を実現できそうです。

楽しい!

HSPLet 3.0 は、従来の HSPLet とは比較にならないくらいの高速さから、従来ほど本家 HSP インタープリタとの速度差を感じることがありません。それどころか、内部演算は HSP インタープリタよりも高速になっているくらいです。
それに、HSP 3.0 で加わった新しい描画命令も使用できます。

Web ブラウザで動くゲーム等を HSP で手軽に開発できるというのが HSPLet の大きな魅力ですが、HSPLet 3.0 ではその実用性が大幅に向上し、より楽しめるものとなっています。

リンク

HSPLet の開発元 (ここから最新版の HSPLet をダウンロードできます。)
Group Finity Web Site
http://www.group-finity.com/

(旧コンテンツ) HSPLet 1.0 の紹介ページ
HSPLet 1.0 ROOM 終了
BACK