WriteableBitmap をクリアするには?

#wpdev_jp

初中級心者問題というかネタ

WriteableBitmap には Pixel データが int Array の Pixels プロパティに格納されています。では、 このデータをクリアするにはどの方法がいいでしょう?

bmp = new WriteableBitmap(2560, 2560);

 

さて、パターン1:こちらを30回繰り返してみたところ、2.1秒かかりました。

for (int i = 0; i < bmp.Pixels.Length; i++)
bmp.Pixels[i] = 0;

 

そして、パターン2:これも同じように30回では 0.17秒で完了

Array.Copy(bclear.Pixels, 0, bmp.Pixels, 0, bmp.Pixels.Length);

 

さらに、パターン3:こちらは30回でも0.06秒でした。

Array.Clear(bmp.Pixels, 0, bmp.Pixels.Length);

 

まぁ、予想通り。つまり、WriteableBitmap としてみるよりも、Array をうまく使うこと、そして1つ1つ入れていくよりも、機械的に移すことのほうが早いことがポイントです。おそらくマルチスレッド処理ができるせい。さらに、Array.Clear なら機械的に埋めるだけなのでかなり早くできるということです。

小さいことですが、こういう積み上げがアプリケーションのレスポンスにつながるんですよね。