Eines meiner eigenen Projekte erfordert mehrere Schreibvorgänge in 65536 Dateien gleichzeitig.
Wenn Sie zuerst alle Dateien öffnen, dann wiederholt schreiben und schließlich alle Dateien schließen. Dann dauert es etwa 16 Minuten, bis der erste Schreibvorgang abgeschlossen ist, und beim zweiten Mal dauert es 40 Minuten. Keine weiteren Tests.
for (int i = 0; i < 65536; i++)
{
fileStream[i] = new FileStream(buffDir+"\"+ i.ToString() + ".dat", FileMode.Create,FileAccess.Write, FileShare.Write,14000);
}
schreiben;
schreiben;
schreiben;
........
for (int i = 0; i < 65536; i++)
{
fileStream[i] .close();
}
Wird während des Schreibvorgangs nur eine entsprechende Datei geöffnet, wird diese nach dem Schreiben geschlossen. Dann dauert es nur noch etwa 2 Minuten und 30 Sekunden, bis alle Schreibvorgänge abgeschlossen sind.
Zyklus{
for (int i=0;i<65536;i++)
{
offen;
schreiben;
schließen;
}
}
Es ist ersichtlich, dass die Leistung der zweiten Methode viel größer ist als die der ersten. Das gleichzeitige Öffnen aller Dateien erfordert viel Speicher. Das Wichtigste ist, dass bei der Verarbeitung des Dateistreams möglicherweise viel Speicher zugewiesen und recycelt werden muss, was viel Speicher und Ressourcen verbraucht.
Darüber hinaus habe ich auch einen Test durchgeführt. Wenn die Anzahl der Dateien relativ gering ist, ist die Leistung der ersten Methode viel besser als die der zweiten.
http://xiyangwushi.cnblogs.com/archive/2006/06/28/437409.html