Uno de mis propios proyectos requiere múltiples operaciones de escritura en 65536 archivos al mismo tiempo.
Si abre todos los archivos primero, luego escribe repetidamente y finalmente cierra todos los archivos. Luego, la primera operación de escritura tardará unos 16 minutos en completarse y la segunda, 40 minutos. No hay más pruebas.
para (int i = 0; i < 65536; i++)
{
fileStream[i] = new FileStream(buffDir+"\"+ i.ToString() + ".dat", FileMode.Create,FileAccess.Write, FileShare.Write,14000);
}
escribir;
escribir;
escribir;
........
para (int i = 0; i < 65536; i++)
{
fileStream[i] .close();
}
Si solo se abre un archivo correspondiente durante la operación de escritura, se cerrará después de la escritura. Luego, solo se necesitan unos 2 minutos y 30 segundos para completar todas las operaciones de escritura.
ciclo{
para (int i=0;i<65536;i++)
{
abierto;
escribir;
cerca;
}
}
Se puede observar que el rendimiento del segundo método es mucho mayor que el del primero. Abrir todos los archivos a la vez requiere mucha memoria. Lo más importante es que cuando .net procesa el flujo de archivos, es posible que deba realizar una gran asignación y reciclaje de memoria, lo que consume mucha memoria y recursos.
Además, también hice una prueba. Si la cantidad de archivos es relativamente pequeña, entonces el rendimiento del primer método es mucho mejor que el del segundo.
http://xiyangwushi.cnblogs.com/archive/2006/06/28/437409.html