スクリプトの実行速度一覧
投稿者: cfm_ 投稿日:2016/03/02 17:40
≪フルカラー表示用画像
|
3D地形描画のテスト≫
それぞれの、実行にかかる時間です。
かかる時間は相対的な値として見てください。
計測方法は、ノベルゲームのイベントスクリプトで、
"x=10"などを64行コピーして、それを5000回くらいループさせました。(実行が遅い物は少ないです)
もっとそれぞれで差が出ると思っていましたが、ほとんどが同じくらいになったので、細かい書き方には神経質にならなくても良さそうです。
注:
(12)テキスト作成:作成可能数制限を無視して作成しました。制限(二百個くらい?)を超えると、で過去のものから自動で消えていきます。
(13)テキスト入力:事前にx=createText(20,20,100,100)を実行しました。
(14)空ループ:while falseなので、この行は完全に無視されます。
(25)フラグ取得:事前にsetFlag("flag", true)を実行しました。
(27)通常変数取得:事前にsetVariable("var", 100)を実行しました。
(30~)関数:def func();endは、
ということ。
(33)関数・引数10:引数は10個ですが、省略しています。
(49,50)事前にa=createArray();a[2]=222を実行
(51,52)事前にsetVariable("var",createArray());getVariable("var")[2]=222を実行
ツイート
かかる時間は相対的な値として見てください。
計測方法は、ノベルゲームのイベントスクリプトで、
"x=10"などを64行コピーして、それを5000回くらいループさせました。(実行が遅い物は少ないです)
もっとそれぞれで差が出ると思っていましたが、ほとんどが同じくらいになったので、細かい書き方には神経質にならなくても良さそうです。
No | 種類 | スクリプト | 1回目 | 2回目 |
---|---|---|---|---|
00 | 代入 | x=10 | 152 | 137 |
01 | 加算代入 | x=1+2 | 253 | 239 |
02 | x=9999+2999 | 258 | 270 | |
03 | 減算代入 | x=10-20 | 256 | 245 |
04 | x=12.345-3.5168 | 231 | 308 | |
05 | 乗算代入 | x=10*20 | 253 | 250 |
06 | x=3363*0.1234567 | 338 | 285 | |
07 | 除算代入 | x=10/3 | 231 | 278 |
08 | x=3363/2378 | 230 | 273 | |
09 | 剰余代入 | x=95123%13 | 275 | 274 |
10 | x=951.23%7.13 | 273 | 262 | |
11 | text作成削除 | x=createText(20,20,100,100);deleteText(x) | 25524 | 27719 |
12 | text作成 | x=createText(20,20,100,100) | 9658 | 9259 |
13 | text入力 | setText(x,"aaaaa") | 155 | 170 |
14 | text削除 | (11)から(12)を引いたもの | 15866 | 18460 |
15 | 空ループ | while false do i=1;end | 141 | 116 |
16 | 10ループ | x=0;while x<10 do x=x+1;end | 5121 | 5435 |
17 | 50ループ | x=0;while x<50 do x=x+1;end | 25899 | 28854 |
18 | 1ループA | (16)の10分の1 | 512 | 544 |
19 | 1ループB | (17)の50分の1 | 517 | 577 |
20 | 空白代入 | x="" | 136 | 186 |
21 | 文字代入 | x="aaaaa" | 121 | 137 |
22 | 100文字代入 | (21)を、"a"100文字で実行 | 124 | 141 |
23 | true代入 | x=true | 122 | 132 |
24 | フラグ代入 | setFlag("flag", true) | 172 | 189 |
25 | フラグ取得 | getFlag("flag") | 150 | 117 |
26 | 通常変数代入 | setVariable("var", 100) | 225 | 188 |
27 | 通常変数取得 | x=getVariable("var") | 168 | 198 |
28 | 配列作成 | x=createArray() | 122 | 112 |
29 | 配列作成 | setVariable("var",createArray()) | 214 | 241 |
30 | 関数実行 | func() (def func();end) | 273 | 264 |
31 | 関数代入 | x=func() (def func();return 10;end) | 343 | 434 |
32 | 関数代入 | x=func(5) (def func(x);return x;end) | 512 | 429 |
33 | 関数・引数10 | x=func(5,5..)(def func(a,b..);return a;end) | 951 | 1103 |
35 | 時刻取得 | x=getTime() | 160 | 125 |
36 | 乱数 | x=rand() | 144 | 165 |
37 | 切り捨て | x=floor(2.56) | 173 | 167 |
38 | PC時刻(ミリ) | x=getLocalCurrentTimeMillisecond() | 155 | 119 |
39 | sin() | x=sin(2.11) | 250 | 254 |
40 | 円周率 | x=pi() | 113 | 108 |
41 | 平方根 | x=sqrt(2) | 179 | 173 |
42 | tan() | x=tan(2.31) | 248 | 201 |
43 | asin() | x=asin(0.34) | 215 | 175 |
44 | toString() | x=toString(123) | 257 | 204 |
45 | toNumber() | x=toNumber("123") | 205 | 197 |
46 | if文 | if false then x=10;end | 146 | 162 |
47 | if代入 | if false then x=10;end | 382 | 370 |
48 | if文 | (47)から(1)代入を引いたもの | 230 | 233 |
49 | 配列取得 | x=a[2] | 310 | 291 |
50 | 配列入力 | a[2]=10 | 173 | 182 |
51 | 通常配列取得 | x=getVariable("var")[2] | 431 | 340 |
52 | 通常配列入力 | getVariable("var",100)[2]=10 | 408 | 449 |
53 | sprite作消 | x=createSprite();deleteSprite(x) | 389 | 327 |
54 | sprite切取 | setSpriteRect(x,..) | 743 | 1079 |
55 | sprite配置 | setSpritePosition(x,100,100) | 279 | 270 |
注:
(12)テキスト作成:作成可能数制限を無視して作成しました。制限(二百個くらい?)を超えると、で過去のものから自動で消えていきます。
(13)テキスト入力:事前にx=createText(20,20,100,100)を実行しました。
(14)空ループ:while falseなので、この行は完全に無視されます。
(25)フラグ取得:事前にsetFlag("flag", true)を実行しました。
(27)通常変数取得:事前にsetVariable("var", 100)を実行しました。
(30~)関数:def func();endは、
def func() end
ということ。
(33)関数・引数10:引数は10個ですが、省略しています。
(49,50)事前にa=createArray();a[2]=222を実行
(51,52)事前にsetVariable("var",createArray());getVariable("var")[2]=222を実行
コメントする
コメントするには、ログインする必要があります。
textの作成~削除は極端に処理が遅いため、
ループ外で予めtextを作成しておき、
ループ内でのtextの削除には
"空白文字"の上書きを行うことで
時間の短縮を行っています
ローカル変数<通常変数<関数実行 の順に処理が遅くなるので、
ゲームのセーブ情報として必要ない部分においては
可能な限りローカル変数を使用すること、
文字数の削減などを考えても
「sv()」等の省略するだけの関数は
ループ内で多用しないこと
こういったことも重要になってきます
関数外でも関数内でも実行速度は変わらなかったので、呼び出し回数を減らすべきです。
忘れていたので、配列の代入・取得をしてみると、多少遅かったです。必要なので使いますが。