しばらく日記の間が空いてしまいました。すみません。
夏のイベントが一段落して、一息吐いた所です。
先日夏休みをもらって東京へ行きまして、そのついでと言っては何ですが、3DS LLを買ってきました。
もちろんプチコンのために、デカいサイズの3DSを待ってました(笑)
これまでのDSi LLとサイズ比較。本体サイズはほぼ同じ。
上画面は横長になった分、3DS LLの方が大きいですが、プチコン画面の表示サイズはあまり変わりません。むしろドットが1対1対応しているDSi LLの方が画面は見やすく、3DS LLは文字がにじんで見えます。
さっそく過去のプチコン自作プログラムを引っ越ししてみたのですが、以前の日記に書いた「簡素ブロック崩し」をプレイした所、ボールがかなり速くなっていて、プログラム内のウェイトを増やさないと遊べない状態でした。
「やっぱり3DSは処理速度が上がっているんだな」と思った次第。
その後Twitterで、DSiと3DSのプチコンの速度差についてコメントをいただいたので、簡単にプログラムを作ってベンチマークを試してみました。
とりあえず、計算処理と描画処理に分けて、2つプログラムを作ってみました。
●ベンチマーク1:実数計算
PRINT TIME$ FOR I=1 TO 500000 A=123*456/789 B=SQR(123456) C=SIN(1)*COS(1) NEXT PRINT TIME$
ダミーの計算をくり返して、最初と最後に時刻を表示して差を見る、簡単なプログラムです。
大したプログラムじゃないですが、一応QRコード。
●ベンチマーク2:グラフィック描画
ACLS PRINT TIME$ FOR I=1 TO 1000 FOR Y=8 TO 191 GLINE 0,Y,255,Y,RND(256) NEXT Y NEXT I GCLS 0 PRINT TIME$
多数の水平線をランダムな色で表示して、その所要時間を計ります。
一応QRコード。
で、ベンチマーク結果は…
●ベンチマーク結果2:グラフィック描画
あれっ? 全然変わりません。
簡素ブロック崩しの速度差はいったい何だったんでしょう?
まあ、グラフィックを解像度変換して表示するオーバーヘッドがあることを考えると、3DSの方が実質速いとも言えるのですが…。
考えること数分。1つ思いついたのは、簡素ブロック崩しではボールの表示にスプライトを使っていることです。
スプライトの表示速度の差かも?と思って、3つめのプログラムを作ってみました。
●ベンチマーク3:スプライト表示
ACLS PRINT TIME$ CLEAR DIM X(100),Y(100) FOR S=0 TO 99 SPSET S,68,2,0,0,0 SPANIM S,4,10 X(S)=RND(240) Y(S)=RND(176) SPOFS S,X(S),Y(S) NEXT FOR I=1 TO 1000 FOR S=0 TO 99 X(S)=X(S)+RND(3)-1 Y(S)=Y(S)+RND(3)-1 X(S)=X(S)+(X(S)<0)-(X(S)>239) Y(S)=Y(S)+(Y(S)<0)-(Y(S)>175) SPOFS S,X(S),Y(S) NEXT S NEXT I SPCLR PRINT TIME$
ちょっと長くなりました。スプライトを100個表示して、アニメーションさせつつランダムに動かすプログラムです。
一応QRコード。
さて、ベンチマーク結果は…