كيفية منع Unboxing - ذاكرة الملاكمة العلوية عند قراءة صفوف SQL التعسفي

StackOverflow https://stackoverflow.com/questions/1842838

  •  12-09-2019
  •  | 
  •  

سؤال

أنا أكتب فئة لتمثيل صف من استعلام SQL. أريد الوصول إلى البيانات الميدانية عبر خاصية الفهرس للفئة. هذا واضح بدرجة كافية إذا قمت بتحميل البيانات في قائمة داخلية من الكائن. لقد حاولت بالفعل هذا وأنا غير سعيد بالملاكمة للبيئام. الملاكمة يزيد من متطلبات الذاكرة بنسبة 20٪. أرغب في تخزين البدائيات كمثبات في الفصل. تخزن فئة DataTable البدائية عن طريق إنشاء صفائف لكل عمود في المخطط من INTATAREADER. قمت بتنفيذ فئة بهذه الطريقة ولكني أفضل أن يتم تخزين البيانات مع كائن الصف بدلا من عمود المشار إليه داخليا.

أي أفكار حول إنجاز هذا؟

هل كانت مفيدة؟

المحلول

يمكنك إنشاء نوع هيكل لتمثيل صف. يمكن القيام به بشكل حيوي ومن الممكن أن تفعل ذلك لذلك لن يكون هناك أي ملاكمة. لست متأكدا من أنه يستحق الجهود

نصائح أخرى

فقط 20٪ النفقات العامة؟ انت محظوظ! لقد قمت بتنظيف بعض الكود حيث أضافت انخفاض أداء أقصى لمدة أربام (وليس عد تأثير الذاكرة الإضافية)! على أي حال، الطريقة النموذجية لمنع استخدام object هو عن طريق البدء باستخدام الأجداد. إليك مثال مبسط:

class RowRepresenter<T>
{
    //....
    public T this[int index] {get; set;}  // implementation left out
}

// initialize, suppose the properties (indexers) should be ints:
RowRepresenter<int> myInstance = new RowRepresenter<int>();
myInstance.LoadData();

// get data (i.e., your indexer)
int somefield = myInstance[2];   // no overhead, no casting required
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top