Salah satu proyek saya memerlukan beberapa operasi penulisan ke 65536 file secara bersamaan.
Jika Anda membuka semua file terlebih dahulu, lalu menulis berulang kali, dan terakhir menutup semua file. Kemudian diperlukan waktu sekitar 16 menit untuk menyelesaikan operasi penulisan pertama, dan diperlukan waktu 40 menit untuk kedua kalinya. Tidak ada pengujian lebih lanjut.
untuk (int saya = 0; saya < 65536; saya++)
{
fileStream[i] = FileStream baru(buffDir+"\"+ i.ToString() + ".dat", FileMode.Create,FileAccess.Write, FileShare.Write,14000);
}
menulis;
menulis;
menulis;
........
untuk (int saya = 0; saya < 65536; saya++)
{
fileStream[i] .close();
}
Jika hanya satu file terkait yang dibuka selama operasi penulisan, maka file tersebut akan ditutup setelah penulisan. Maka hanya membutuhkan waktu sekitar 2 menit 30 detik untuk menyelesaikan semua operasi penulisan.
siklus{
untuk (int i=0;i<65536;i++)
{
membuka;
menulis;
menutup;
}
}
Terlihat bahwa kinerja metode kedua jauh lebih besar dibandingkan metode pertama. Membuka semua file sekaligus memerlukan banyak memori. Yang paling penting adalah ketika .net memproses filestream, mungkin harus melakukan banyak alokasi dan daur ulang memori, yang menghabiskan banyak memori dan sumber daya.
Selain itu, saya juga melakukan tes. Jika jumlah filenya relatif sedikit, maka performa cara pertama jauh lebih baik dibandingkan cara kedua.
http://xiyangwushi.cnblogs.com/archive/2006/06/28/437409.html