Ваш код может быть учтен к этому (вместо File.ReadAllBytes):
public byte[] ReadAllBytes(string fileName)
{
byte[] buffer = null;
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
}
return buffer;
}
Обратите внимание на Integer.MaxValue - ограничение размера файла, устанавливаемое методом Read. Другими словами, вы можете прочитать только блок размером 2 ГБ.
Также обратите внимание, что последним аргументом для FileStream является размер буфера.
Я бы также предложил прочитать о FileStream и BufferedStream .
Как всегда, простой пример программы для профиля, который является самым быстрым, будет наиболее выгодным.
Также ваше базовое оборудование будет иметь большое влияние на производительность. Используете ли вы серверные жесткие диски с большими кэшами и карту RAID с встроенной кэш-памятью? Или вы используете стандартный диск, подключенный к порту IDE?