まさかCeleronに負ける(?)とは思っていませんでした。
メモリの速度の問題ですかね…
書き忘れましたが、実行中にウィンドウを動かすと正しく計測できませんのでご注意ください。
別バージョンを作ってみました。
1.乱数値で書き込み(5000000回、randomizeは実行していません)
ソースコード
//↓をコメントアウトすると32bitで実行します。
#define use_64bit
#ifdef use_64bit
#runtime "hsp3_64"
#endif
//1秒以内に終わる処理でないと計測できません。
//timeの配列要素数が回数(ここでは10回)
dim time, 10
average = 0.0
foreach time
title "" + (cnt + 1) + "回目準備中…"
gosub *sleep
wait 50
title "" + (cnt + 1) + "回目実行中…"
gosub *go
time(cnt) = stoptime - starttime
mes "" + (cnt + 1) + "回目: " + time(cnt) + "ms"
loop
title "完了"
foreach time
average += time(cnt)
loop
average /= length(time)
mes "平均: " + average + "ms"
#ifdef use_64bit
buf = "hsp3_64での実行結果\n"
#else
buf = "hsp3(32bit)での実行結果\n"
#endif
//ここに実行内容
buf += {"内容: pokeで乱数値を5000000回書き込み\n"}
foreach time
buf += "" + (cnt + 1) + "回目: " + time(cnt) + "ms\n"
loop
buf += "平均: " + average + "ms"
mesbox buf, ginfo_winx, ginfo_winy - ginfo_cy, 0
stop
*sleep
//-----ここから下でデータの初期化等
sdim data, 5000000
//-----ここまで
return
*go
starttime = gettime(7)
//-----ここから下に時間のかかる処理(1秒以内)
repeat 5000000
poke data, cnt, rnd(256)
loop
//-----ここまで
stoptime = gettime(7)
if (starttime > stoptime) : stoptime += 1000
return
私の結果(環境は同じです)
hsp3_64での実行結果
内容: pokeで乱数値を5000000回書き込み
1回目: 442ms
2回目: 440ms
3回目: 435ms
4回目: 443ms
5回目: 454ms
6回目: 440ms
7回目: 459ms
8回目: 435ms
9回目: 429ms
10回目: 458ms
平均: 443.500000ms
hsp3(32bit)での実行結果
内容: pokeで乱数値を5000000回書き込み
1回目: 486ms
2回目: 448ms
3回目: 519ms
4回目: 489ms
5回目: 471ms
6回目: 484ms
7回目: 476ms
8回目: 485ms
9回目: 487ms
10回目: 480ms
平均: 482.500000ms
回数が少ないせいかほとんど差はないようです。
2.sin(rnd(32768))(5000000回、randomizeは実行していません)
ソースコード
//↓をコメントアウトすると32bitで実行します。
;#define use_64bit
#ifdef use_64bit
#runtime "hsp3_64"
#endif
//1秒以内に終わる処理でないと計測できません。
//timeの配列要素数が回数(ここでは10回)
dim time, 10
average = 0.0
foreach time
title "" + (cnt + 1) + "回目準備中…"
gosub *sleep
wait 50
title "" + (cnt + 1) + "回目実行中…"
gosub *go
time(cnt) = stoptime - starttime
mes "" + (cnt + 1) + "回目: " + time(cnt) + "ms"
loop
title "完了"
foreach time
average += time(cnt)
loop
average /= length(time)
mes "平均: " + average + "ms"
#ifdef use_64bit
buf = "hsp3_64での実行結果\n"
#else
buf = "hsp3(32bit)での実行結果\n"
#endif
//ここに実行内容
buf += {"内容: sin(rnd(32768))を5000000回\n"}
foreach time
buf += "" + (cnt + 1) + "回目: " + time(cnt) + "ms\n"
loop
buf += "平均: " + average + "ms"
mesbox buf, ginfo_winx, ginfo_winy - ginfo_cy, 0
stop
*sleep
//-----ここから下でデータの初期化等
a = 0
//-----ここまで
return
*go
starttime = gettime(7)
//-----ここから下に時間のかかる処理(1秒以内)
repeat 5000000
a = sin(rnd(32768))
loop
//-----ここまで
stoptime = gettime(7)
if (starttime > stoptime) : stoptime += 1000
return
私の実行結果
hsp3_64での実行結果
内容: sin(rnd(32768))を5000000回
1回目: 604ms
2回目: 573ms
3回目: 557ms
4回目: 549ms
5回目: 558ms
6回目: 573ms
7回目: 558ms
8回目: 568ms
9回目: 572ms
10回目: 562ms
平均: 567.400000ms
hsp3(32bit)での実行結果
内容: sin(rnd(32768))を5000000回
1回目: 678ms
2回目: 663ms
3回目: 681ms
4回目: 658ms
5回目: 658ms
6回目: 657ms
7回目: 659ms
8回目: 660ms
9回目: 656ms
10回目: 678ms
平均: 664.800000ms
こちらも回数が少ないせいかほとんど差はないようです。