STEP文の有無とFOR文の処理速度の違い
2007/10/02
報告書作成 五十嵐真人
0、目的と仮説
十進法BASICにおいてSTEP文の有無によって処理速度がどれ程違うのか、実験によってそれを検証する。私はSTEP文を書かない方が処理速度が速いと思うのでその点についても検証したいと思う。
1、プログラム例(十進法BASIC、ノーマルモード)
PRINT "** TIME **"
FOR n=1 TO 10
LET t0=TIME
FOR m=1 TO 100000
FOR l=0 TO 100000 STEP m
LET count=count+1
NEXT l
NEXT m
LET t=TIME-t0
PRINT n;
PRINT USING "#.##":t;
PRINT "s"
LET sumtime=sumtime+t
NEXT n
PRINT "ave:";sumtime/10;"s"
LET sumtime=0
PRINT "FOR l=0 TO IP(N/m) の場合"
PRINT "** TIME **"
FOR n=1 TO 10
LET t0=TIME
FOR m=1 TO 100000
FOR l=0 TO IP(100000/m)
LET count=count+1
NEXT l
NEXT m
LET t=TIME-t0
PRINT n;
PRINT USING "#.##":t;
PRINT "s"
LET sumtime=sumtime+t
NEXT n
PRINT "ave:";sumtime/10;"s"
END
2、結果
(1)FOR l=0 TO N STEP m の場合
** TIME **
1 1.08s
2 .98s
3 .95s
4 .97s
5 .93s
6 .97s
7 .95s
8 .94s
9 .98s
10 .97s
ave: .97s
(2)FOR l=0 TO IP(N/m) の場合
** TIME **
1 1.07s
2 1.08s
3 1.11s
4 1.12s
5 1.08s
6 1.11s
7 1.09s
8 1.08s
9 1.09s
10 1.08s
ave: 1.09 s
3、考察
仮説は間違いであった。STEP文を用いた場合、処理の平均時間aveは0.97秒であり、
同じ処理を、STEP文を用いない場合、処理の平均時間aveは1.09秒であった。実験結果はわずかではあるがSTEP文を用いた方が処理時間が速いという結果だった。
これは、関数IP()の計算時間が予想以上にかかったために、STEP文を用いた場合の方が処理時間が速くなったためだと思う。