Моя программа считывает x байтов из файла, проверяет, все ли они равны нулю, повторяет процесс для 20 000 файлов и сохраняет список файлов с ненулевыми байтами. Пытаясь контролировать производительность, я сделал количество байтов, которое он проверяет для каждого файла, определяемым (byteSize).
Проблема в том, что первый запуск программы занимает около 5 минут (byteSize = 8192), но если я запускаю его снова, это занимает всего 10 секунд, даже если я закрываю и перезапускаю программу, так что единственная причина мне приходит в голову, что массив байтов остается в памяти.
BinaryReader находится под директивой «using», поэтому, насколько я знаю, он должен закрыть поток после завершения цикла. Так почему байтовый массив остается? Как я могу удалить его? Мне нужно сделать это, чтобы измерить фактическую производительность каждый раз, когда я запускаю прогу.
byte[] readByte = new byte[byteSize];
for (int i = 0; i < readCycles; i++)
{
using (BinaryReader reader = new BinaryReader(new FileStream(file, FileMode.Open, FileAccess.Read)))
{
reader.BaseStream.Seek(8192 + i * byteSize, SeekOrigin.Begin);
reader.Read(readByte, 0, byteSize);
}
foreach (byte b in readByte)
{
if (b != 0)
{
allZeros = false;
break;
}
else
allZeros = true;
}
if (allZeros == false) break;
}