ushort[,,]
おそらく大きな、byte[,,]
またはdouble[,,]
配列をすばやく保存/ロードする必要があります。
私は単に配列要素を要素ごとにスキャンして、単純なアプローチを試みましたFileStream fs
:
for (p = 0; p < Planes; p++)
{
for (y = 0; y < Height; y++)
{
for (x = 0; x < Width; x++)
{
fs.Write(BitConverter.GetBytes(array1[p, y, x]), 0, 8);
}
}
}
このループを に置き換えました。これによりBinaryFormatter
、パフォーマンスが向上します。
bf.Serialize(fs, array1);
3 x 1024 x 768 の double の配列を保存してから 10 回ロードする小さなベンチマークを実行し、次の結果を得ました。
単純なアプローチ: 10 628 ミリ秒
BinaryFormatter アプローチ: 8 722 ミリ秒
より速い方法はありますか?ポインタを使用していますか?配列を1次元にシリアライズしてからファイルにフラッシュしますか?
提案をありがとう。