Один из моих собственных проектов требует одновременной записи нескольких операций записи в 65536 файлов.
Если вы сначала откроете все файлы, затем напишите несколько раз и, наконец, закроете все файлы. Тогда для завершения первой операции записи потребуется около 16 минут, а для второго — 40 минут. Никаких дальнейших испытаний.
для (int я = 0; я <65536; я++)
{
fileStream[i] = новый FileStream(buffDir+"\"+ i.ToString() + ".dat", FileMode.Create, FileAccess.Write, FileShare.Write,14000);
}
писать;
писать;
писать;
........
для (int я = 0; я <65536; я++)
{
fileStream[i].close();
}
Если во время операции записи открыт только один соответствующий файл, то после записи он будет закрыт. Тогда для завершения всех операций записи потребуется всего около 2 минут и 30 секунд.
цикл{
для (int i=0;i<65536;i++)
{
открыть;
писать;
закрывать;
}
}
Видно, что производительность второго метода значительно выше первого. Для одновременного открытия всех файлов требуется много памяти. Самое главное, что когда .net обрабатывает файловый поток, ему, возможно, придется выполнить много операций по выделению и переработке памяти, что потребляет много памяти и ресурсов.
Кроме того, я также провел тест. Если количество файлов относительно небольшое, то производительность первого метода намного лучше, чем второго.
http://xiyangwushi.cnblogs.com/archive/2006/06/28/437409.html