Scratch でプログラミングしているとき、
やけにうごきがおもいな っていうとき、
チェックポイントをご紹介します。
たとえば、
こんなプログラムをつくったとしましょう。
このプログラムは、
右向きの矢印キーがおされたらネコが10歩(ピクセル)動く
だけの、シンプルなプログラムです。
ブロックの数も、5個しかありません。
ただ、このプログラムを実行すると、思った通りに動きます。
ただ、これを実行したときのCPUの負荷は非常に重くなります。
パソコンの冷却ファンが勢いよく回るくらい。
下は実際に 上のプログラムを動かしたときのCPU負荷です。ダントツで
負荷がおおきくなっています。
こんなにCPUの計算必要かというと、そうでもありません。
ちょっと知っておくだけで、もっと負荷をへらすことができます。
このプログラムでは、
このループのなかに、「表示する」 というブロックをひとついれるだけで、
CPUの負荷は5%前後程度におさえることができます。
なぜか?
ポイントは、再描画の有り無し。
このプログラムではずっと のくりかえしループをつかっています。
繰り返しループ では、
システムの可能な限り高速で 、右矢印キーがおされたかどうかをチェックします。
実は、そんなに頻繁に問い合わせる必要はありません。
「表示する」 のブロックをいれることで、
1回のループ毎に 画面の再描画を強制的に行います。
更新が終わるまで、ループの次の周には入りません。
表示画面の再描画は、Scratch の場合、30fps (1秒間に30回)と決まっています。
「表示する」ブロックをいれると、ループの周期を1/30 秒 程度に抑えられる
→ キーボードがおされたか、チェックする頻度を減らし、負荷を抑えられる
というわけです。
画面の再描画される要素があるコマンドブロックがループ内にあれば、画面再描画されますが、
それが無い場合、再描画されず、すぐに次の周のループにはいってしまいます。
演算が目的のプログラムならそれでよいですが、
冒頭にあげた「キーボードがおされたら、スプライトが動く」
などのときは、不必要に負荷をかけているだけになります。