次に、System.Buffer.BlockCopyを使用してプリミティブの配列に変換されるバイト配列が渡されます。基本的に私のコードは次のようになります。
void Convert(byte[] b)
{
int[] i1 = new int[100]; // real arrays much larger
double[] d1 = new double[100];
int iPos=0, iSize;
iSize = i1.Length * sizeof(int);
System.Buffer.BlockCopy(b, iPos, i1, 0, iSize);
iPos += iSize;
iSize = d1.Length * sizeof(double);
System.Buffer.BlockCopy(b, iPos, d1, 0, iSize);
iPos += iSize;
//etc: lots of arrays
b=null;
}
これは非常にパフォーマンスが高いですが、bが解放されるまで、メモリ使用量は明らかに私のバイト配列の2倍のサイズです。
バイト配列のセクションをプリミティブ配列に直接キャストする方法はありますか?データのコピーを伴わない(したがって、メモリ使用量が2倍にならない)もので、おそらくさらに高速ですか?