تكرار السؤال: …
الإجابة المختصرة
تمنع عمليات إعادة تخصيص المصفوفات الداخلية المتكررة ونسخ البيانات في الـ Heap في كل مرة تتجاوز فيها المجموعة حجمها الحالي.
الشرح
تبدأ List<T> بمصفوفة داخلية صغيرة (مثلاً 4 عناصر). عند إضافة العنصر الخامس، تنشئ مصفوفة جديدة بضعف الحجم (8) وتنسخ كل العناصر إليها وتترك القديمة للـ GC. إذا كنت ستضيف 10,000 عنصر، ستتكرر هذه العملية المكلفة 12 مرة. تحديد new List<T>(10000) يخصص المصفوفة بالحجم المطلوب مرة واحدة فقط بصفر نسخ إضافي وسرعة قصوى.
مثال بالكود
// تخصيص السعة مسبقاً
var list = new List<Customer>(expectedCount);
var dict = new Dictionary<int, Customer>(expectedCount);أخطاء شائعة
- إنشاء قوائم وقواميس دون سعة أولية عند قراءة بيانات معلومة الحجم مسبقاً من قواعد البيانات.