ベンチマーク(mspとamsp)

同じスプライトを動かす命令mspとamsp。mspは現在の位置からの移動量で計算し、amspは移動後の座標を絶対指定する。
そのどちらが早いかを確認してみた。

スクリプト

 *define
game
 *start
9
wait 1000
8
wait 1000
7
wait 1000
6
wait 1000
5
wait 1000
4
wait 1000
3
wait 1000
2
wait 1000
1
wait 1000
0
wait 1000
erasetextwindow 0

lsp 0,":s/100,100,0;#FF0000●",-100,0
textclear
mspを使った場合。
resettimer
for %1=0 to 10
for %0= -100 to 640
msp 0,1,0
print 1
next
for %0= -100 to 640
msp 0,-1,0
print 1
next
msp 0,0,1
next
gettimer %10

lsp 0,":s/100,100,0;#FF0000●",-100,0
textclear
amspを使った場合。
resettimer
for %1=0 to 10
for %0= -100 to 640
amsp 0,%0,%1
print 1
next
for %0= 640 to -100 step -1
amsp 0,%0,%1
print 1
next
next
gettimer %11

textclear
%10
%11

gosub *screenshot
click
end

 *screenshot
getscreenshot 640,480
date %101,%102,%103
time %104,%105,%106
mov $100,"20"
for %100=101 to 106
if %%100<10 add $100,"0"
itoa $%100,%%100
add $100,$%100
next
add $100,".bmp"
savescreenshot $100
return

結果


上段がmspによる結果。下段がamspによる結果。
念のために、実行する順番を入れ替えてみた(結果の表示される順番は変わらず)

結果。mspよりもamspの方が実行は早いと言う結果に。ただ、自分で計算する手間を考えたらそうでもないかも知れないが。