يتطلب أحد مشاريعي عمليات كتابة متعددة لـ 65536 ملفًا في نفس الوقت.
إذا قمت بفتح جميع الملفات أولاً، فاكتب بشكل متكرر، وأخيرًا أغلق جميع الملفات. ثم سيستغرق إكمال عملية الكتابة الأولى حوالي 16 دقيقة، وسيستغرق 40 دقيقة للمرة الثانية. لا مزيد من الاختبارات.
لـ (int i = 0; i < 65536; i++)
{
fileStream[i] = new FileStream(buffDir+"\"+ i.ToString() + ".dat", FileMode.Create,FileAccess.Write, FileShare.Write,14000);
}
يكتب؛
يكتب؛
يكتب؛
........
لـ (int i = 0; i < 65536; i++)
{
fileStream[i] .إغلاق();
}
إذا تم فتح ملف واحد فقط أثناء عملية الكتابة، فسيتم إغلاقه بعد الكتابة. ثم يستغرق الأمر حوالي دقيقتين و30 ثانية فقط لإكمال جميع عمليات الكتابة.
دورة{
لـ (int i=0;i<65536;i++)
{
يفتح؛
يكتب؛
يغلق؛
}
}
ويمكن ملاحظة أن أداء الطريقة الثانية أكبر بكثير من أداء الطريقة الأولى. يتطلب فتح جميع الملفات في وقت واحد قدرًا كبيرًا من الذاكرة. الشيء الأكثر أهمية هو أنه عندما يقوم .net بمعالجة تدفق الملفات، قد يتعين عليه إجراء الكثير من تخصيص الذاكرة وإعادة التدوير، مما يستهلك الكثير من الذاكرة والموارد.
بالإضافة إلى ذلك، قمت أيضًا بإجراء اختبار إذا كان عدد الملفات صغيرًا نسبيًا، فإن أداء الطريقة الأولى أفضل بكثير من الطريقة الثانية.
http://xiyangwushi.cnblogs.com/archive/2006/06/28/437409.html