更新後、最初のリファラ
ガルフォース レズ - Google 検索
直球です。
んで、結果がこれ。
正月そうそう、清々しいですね!
どれが一番速いか
※スクリプトに間違いがあったので、for/nextをとりなおし。それに伴い修正。
昨日の問題提起により、ベンチマークを実行。
ていうか、以前どっかで読んだような記憶があるんだがなあ。
NScripterには、いくつもの実行順制御命令がある。そのどれが一番速いかを試してみた。
比較したのは、
- goto
- jumpb(/jumpf)
- skip
- for/next
の四つ。
検証用のスクリプト等は後回しで、結果だけをまとめてここで述べると。
- goto
- 427,299ミリ秒
- jumpb
- 430,747ミリ秒
- skip
- 432,057ミリ秒
- for/next
- 425,492ミリ秒
となった。
順番にすると、
- for/next
- goto
- jumpb
- skip
である。
この中でfor/nextがずば抜けて速いと言うことに。
誰か検証してみて欲しいなー。
goto
*define game *start saveoff mov %0,0 ; 変数の設定 mov %1,100000 ; 目標値の設定 GOTOによるループ resettimer ; タイマーリセット *loop itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 inc %0 if %0<%1 goto *loop *save gettimer %0 itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,"経過時間:" add $1,$0 add $1,"ミリ秒" lsp 1,$1,26,52 print 1 getscreenshot 640,480 savescreenshot "goto.bmp" end
jumpb
(前略) *loop ~ itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 inc %0 if %0<%1 jumpb *save (後略)
skip
(前略) *loop itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 inc %0 if %0<%1 skip -6 *save (後略)
for/next
(前略) *loop for %0=0 to %1-1 itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 next *save (後略)
更新後、最初のリファラ
ガルフォース レズ - Google 検索
直球です。
んで、結果がこれ。
正月そうそう、清々しいですね!
どれが一番速いか
※スクリプトに間違いがあったので、for/nextをとりなおし。それに伴い修正。
昨日の問題提起により、ベンチマークを実行。
ていうか、以前どっかで読んだような記憶があるんだがなあ。
NScripterには、いくつもの実行順制御命令がある。そのどれが一番速いかを試してみた。
比較したのは、
- goto
- jumpb(/jumpf)
- skip
- for/next
の四つ。
検証用のスクリプト等は後回しで、結果だけをまとめてここで述べると。
- goto
- 427,299ミリ秒
- jumpb
- 430,747ミリ秒
- skip
- 432,057ミリ秒
- for/next
- 425,492ミリ秒
となった。
順番にすると、
- for/next
- goto
- jumpb
- skip
である。
この中でfor/nextがずば抜けて速いと言うことに。
誰か検証してみて欲しいなー。
goto
*define game *start saveoff mov %0,0 ; 変数の設定 mov %1,100000 ; 目標値の設定 GOTOによるループ resettimer ; タイマーリセット *loop itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 inc %0 if %0<%1 goto *loop *save gettimer %0 itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,"経過時間:" add $1,$0 add $1,"ミリ秒" lsp 1,$1,26,52 print 1 getscreenshot 640,480 savescreenshot "goto.bmp" end
jumpb
(前略) *loop ~ itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 inc %0 if %0<%1 jumpb *save (後略)
skip
(前略) *loop itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 inc %0 if %0<%1 skip -6 *save (後略)
for/next
(前略) *loop for %0=0 to %1-1 itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 next *save (後略)
更新後、最初のリファラ
ガルフォース レズ - Google 検索
直球です。
んで、結果がこれ。
正月そうそう、清々しいですね!
どれが一番速いか
※スクリプトに間違いがあったので、for/nextをとりなおし。それに伴い修正。
昨日の問題提起により、ベンチマークを実行。
ていうか、以前どっかで読んだような記憶があるんだがなあ。
NScripterには、いくつもの実行順制御命令がある。そのどれが一番速いかを試してみた。
比較したのは、
- goto
- jumpb(/jumpf)
- skip
- for/next
の四つ。
検証用のスクリプト等は後回しで、結果だけをまとめてここで述べると。
- goto
- 427,299ミリ秒
- jumpb
- 430,747ミリ秒
- skip
- 432,057ミリ秒
- for/next
- 425,492ミリ秒
となった。
順番にすると、
- for/next
- goto
- jumpb
- skip
である。
この中でfor/nextがずば抜けて速いと言うことに。
誰か検証してみて欲しいなー。
goto
*define game *start saveoff mov %0,0 ; 変数の設定 mov %1,100000 ; 目標値の設定 GOTOによるループ resettimer ; タイマーリセット *loop itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 inc %0 if %0<%1 goto *loop *save gettimer %0 itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,"経過時間:" add $1,$0 add $1,"ミリ秒" lsp 1,$1,26,52 print 1 getscreenshot 640,480 savescreenshot "goto.bmp" end
jumpb
(前略) *loop ~ itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 inc %0 if %0<%1 jumpb *save (後略)
skip
(前略) *loop itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 inc %0 if %0<%1 skip -6 *save (後略)
for/next
(前略) *loop for %0=0 to %1-1 itoa2 $0,%0 mov $1,":s/26,26,0;#FFFFFF" add $1,$0 lsp 0,$1,26,26 print 1 next *save (後略)