Scratch でプログラミングしているとき、

 

やけにうごきがおもいな っていうとき、

 

チェックポイントをご紹介します。

 

たとえば、

 

こんなプログラムをつくったとしましょう。

 

このプログラムは、

右向きの矢印キーがおされたらネコが10歩(ピクセル)動く

だけの、シンプルなプログラムです。

ブロックの数も、5個しかありません。

ただ、このプログラムを実行すると、思った通りに動きます。

ただ、これを実行したときのCPUの負荷は非常に重くなります。

パソコンの冷却ファンが勢いよく回るくらい。

 

下は実際に 上のプログラムを動かしたときのCPU負荷です。ダントツで

負荷がおおきくなっています。

 

こんなにCPUの計算必要かというと、そうでもありません。

ちょっと知っておくだけで、もっと負荷をへらすことができます。

 

このプログラムでは、 

このループのなかに、「表示する」 というブロックをひとついれるだけで、

CPUの負荷は5%前後程度におさえることができます。

 

なぜか?

 

ポイントは、再描画の有り無し。

 

このプログラムではずっと のくりかえしループをつかっています。

繰り返しループ では、

システムの可能な限り高速で 、右矢印キーがおされたかどうかをチェックします。

実は、そんなに頻繁に問い合わせる必要はありません。

 

「表示する」 のブロックをいれることで、

1回のループ毎に 画面の再描画を強制的に行います。

 

更新が終わるまで、ループの次の周には入りません。

表示画面の再描画は、Scratch の場合、30fps (1秒間に30回)と決まっています。

 

「表示する」ブロックをいれると、ループの周期を1/30 秒 程度に抑えられる

 

→ キーボードがおされたか、チェックする頻度を減らし、負荷を抑えられる

 

というわけです。

 

画面の再描画される要素があるコマンドブロックがループ内にあれば、画面再描画されますが、

 

それが無い場合、再描画されず、すぐに次の周のループにはいってしまいます。

 

演算が目的のプログラムならそれでよいですが、

 

冒頭にあげた「キーボードがおされたら、スプライトが動く」

 

などのときは、不必要に負荷をかけているだけになります。