version 5のスクリプト実行速度をversion 4との比較で示しています。
簡単なまとめ
version 5はversion 4比でおよそ3倍程度の速さで同じコードを実行できる。
簡易配列はversion 4のほうが高速。version 5では極力汎用配列を使いたいところです。
確認に使用した環境
Windows xp Home Edition
Pentium4 2.4GHz / 512MB
「伺か」materia 583
ゴーストテンプレート「紺野あやめ」
ベンチマーク1
概要
数値変数インクリメント、文字列変数に1文字追加を1万回繰り返す
目的
基礎演算とループの速度を確認する
実行するスクリプト
foo
{
_s_time = GETTICKCOUNT
_str = ""
_int = 0
for _i = 0; _i < 10000; _i++ {
_str += "A"
_int++
}
GETTICKCOUNT - _s_time
}
version 4ではGETTICKCOUNTをsystemuptickcountに書き換える。
結果
5回平均
DLL | 実行時間[ms] | ver4.97fix0比 |
version 4.97 fix0 | 531.2 | - |
version 5.0 | 178.2 | ×2.98 |
ベンチマーク2
概要
展開が必要な要素を含むスクリプトを1000回繰り返す
目的
展開速度を確認する
ランダムトーク出力処理を想定
実行するスクリプト
foo
{
_s_time = GETTICKCOUNT
var = 12
_var = 34
_result = ""
for _i = 0; _i < 1000; _i++ {
_result = "変数var=%var、ローカル変数_var=%_var、関数foo2=%foo2。"
}
GETTICKCOUNT - _s_time
}
foo2
{
"テスト"
"テスト2"
"テスト3"
}
コード2
ループ中のスクリプトを以下に書き換え
_result = "変数var=%(var)、ローカル変数_var=%(_var)、関数foo2=%(foo2)。"
結果
5回平均
DLL | 実行時間[ms] | ver4.97fix0比 |
version 4.97 fix0 | 1125 | - |
version 5.0 | 390.6 | ×2.88 |
version 5.0(コード2) | 31.2 | ×35.7 |
備考
範囲付き埋め込み展開は高速。
ベンチマーク3
概要
ソート
目的
代表的なアルゴリズムの動作速度検証
実行するスクリプト
複数の簡易配列を使用したもので比較的複雑。ソースは長いので省略。
コード2
簡易配列を汎用配列へ置換。
結果
DLL | 実行時間[ms] | ver4.97fix0比 |
version 4.97 fix0 | 500 | - |
version 5.0 | 1078 | ×0.46 |
version 5.0(コード2) | 141 | ×3.54 |
備考
version 5は簡易配列が遅い。
ベンチマーク4
概要
オーナードローメニュー展開時に来るNOTIFYリクエスト処理速度
目的
「伺か」向けの確認事項。
リクエストヘッダのパース速度を確認する
実行するスクリプト
OnMouseClick
{
if reference5 == 1 { // ref5=1 右クリック
s_time = GETTICKCOUNT
}
}
On_quitbutton.caption // materiaで最後に送信されるリソース取得リク
{
_dtime = GETTICKCOUNT - s_time
LOGGING(_dtime)
"終了"
}
結果
5回平均
DLL | 実行時間[ms] | ver4.97fix0比 |
version 4.97 fix0 | 169.2 | - |
version 5.0 | 168.6 | ×1.0 |
備考
version 4ではDLL内でリクエストヘッダの構文解析をしていたが、version 5ではスクリプトで行なっている。
このためversion 5では遅いはずだが、等速で動けているのでこれで問題ないと判断。
|