Я всегда был в BinaryReader или Stream, чтобы иметь метод для быстрого чтения массива.Так как MS представила MemoryMappedFiles, был один класс MemoryMappedViewAccessor, у которого есть метод, который называется ReadArray для чтения массивов.
Кто-то знает, как работает этот метод.В настоящее время ужасно читать массивы из двоичного потока.Сначала вы должны прочитать поток как байты, а затем скопировать поток байтов в формат целевого массива.Было бы неплохо сделать это за один шаг.
Я попытался включить .NET-Framework с пошаговым переводом исходного кода в VS2010, но он не работает.
В настоящее время я читаю свои данные для нескольких типов примитивных массивов, например:
public static float[] ReadSingles(this Stream stream_in, int count)
{
FileStream fileStream = stream_in as FileStream;
float[] Data = new float[count];
if (count == 0) return Data;
fixed (float* dataptr = &Data[0])
{
if ((fileStream == null) || (StreamExt.Mode == StreamExtMode.Conventional))
{
byte[] bts = ReadBytes(stream_in, count * sizeof(float));// stream_in.ReadBytes(count * sizeof(float));
Marshal.Copy(bts, 0, new IntPtr(dataptr), bts.Length);
}
}
return Data;
}
Есть ли хороший ответ на этот вопрос?
Спасибо, Мартин