Производительность чтения двоичных файлов .NET

У меня есть очень большой набор двоичных файлов, где несколько тысяч необработанных кадров видео Я последовательно читаю и обрабатываю, и теперь я пытаюсь оптимизировать его, так как он кажется более связанным с процессором, чем с I / O.

Кадры в настоящее время читаются таким образом, и я подозреваю, что это Самый большой виновник:

private byte[] frameBuf;  
BinaryReader binRead = new BinaryReader(FS);

// Initialize a new buffer of sizeof(frame)  
frameBuf = new byte[VARIABLE_BUFFER_SIZE];  
//Read sizeof(frame) bytes from the file  
frameBuf = binRead.ReadBytes(VARIABLE_BUFFER_SIZE); 

Будет ли большая разница в .NET для реорганизации ввода-вывода, чтобы избежать создания всех этих новых байтовых массивов с каждым кадром?

Мое понимание. Механизм распределения памяти в NET слабый, поскольку я исходил из чистого фона C / C ++. Моя идея состоит в том, чтобы переписать это, чтобы разделить статический буферный класс, который содержит очень большой общий буфер с целочисленным отслеживанием фактического размера кадра, но мне нравится простота и удобочитаемость текущей реализации, и я предпочел бы сохранить его, если CLR уже обрабатывает это каким-то образом, о котором я не знаю.

Любой вклад будет высоко ценится.

6
задан dtb 18 August 2010 в 19:07
поделиться