tonari note

オンラインゲームエンジニアの雑記

Unityでパフォーマンス稼ぐための小ネタ その3

またしても配列ネタです。
今回はArray.Copyについて。

var source = Enumerable.Range(0, 1000).ToArray();
var copied = new int[source.Length];

Array.Copy(source, 0, copied, 0, source.Length);

さて、これでもコピーは可能なのですが、実はプリミティブ型に限りもう少し速度が上がるコピー方法があります。

var source = Enumerable.Range(0, 1000).ToArray();
var copied = new int[source.Length];

Buffer.BlockCopy(source, 0, copied, 0, source.Length * sizeof(int));

Buffer.BlockCopy(MSDN)

Buffer.BlockCopyはプリミティブ型の配列に限り、バイト単位でコピーできるメソッドです。
Array.Copyと違ってバイト数を指定しなければいけない点だけ注意してください。

実行結果
うん、チョットハヤイ。