ما هي المحكمة الخاصة بلبنان تنفيذ بأقل الذاكرة البصمة ؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

أنا أعمل على نطاق واسع جدا الحوسبة المكتبة التي تستخدم المحكمة الخاصة بلبنان بشكل كبير.المكتبة التي يجري بناؤها باستخدام MSVC2003 و هو باستخدام المحكمة الدولية الخاصة بلبنان التنفيذ.أنا أبحث عن بديل الخاصة بلبنان التنفيذ التي من شأنها أن تساعد المكتبة خفض متطلبات الذاكرة وزيادة أدائها.

ليس من الممكن للتبديل إلى إصدار أحدث من MSVC لحظة.

أود الحصول على بعض ردود الفعل على استخدام العالم الحقيقي لا يعتمد على مقاييس إذا كان ذلك ممكنا.

تحرير:لجعله أكثر وضوحا قليلا ، على سبيل المثال بعض STL التنفيذ (مثل STLSoft) يقترح تحسينات محددة عن سلسلة سلسلة;هذه قد تبدو صغيرة في التأثير ولكنها يمكن أن تؤدي إلى تحسينات كبيرة.STLPort هو مثال جيد آخر حيث من الواضح أنها الدولة هدفهم:بعد أن أسرع الخاصة بلبنان تنفيذ حولها ، هناك stdlib++, الخ ...كل هذه يمكن أن يكون مرشحا جيدا ولكن ليس لدي الوقت لاختبار ، تتطلب بعض المجتمع تساعد على ذلك.

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

المحلول

STLPort.لم تقاس استخدام الذاكرة الاختلافات, لكنه بالتأكيد أسرع (نعم ، استخدام العالم الحقيقي).

نصائح أخرى

السؤال الأول الخاص بك الفرضية الأساسية التي يمكنك التبديل إلى إصدار أحدث من MSVC.

أنا لا أعتقد أنك سوف تحصل على أقل من الذاكرة وزيادة الأداء "مجانا" عن طريق تحميل جديد في المحكمة الخاصة بلبنان.أو على الأقل إذا كنت فعلت ذلك ، ربما سوف يكون عليك أن تفعل العديد من إصلاح التعليمات البرمجية كما لو كنت مجرد تحديث إلى أحدث MSVC.

على المدى الطويل, ليس هناك سؤال كنت ترغب في تحديث...تفعل ذلك الآن ، قد محظوظا في الحصول على بعض من تلك الذاكرة والأداء مجانا.

الشيء الوحيد الذي يمكنني أن أفكر أن أقترح عليكم على غرار ما تقوله تبحث عنه سيكون محاولة إنتل المترجم الذي كان لدي كل الخير (الأداء!) والسيئة (ملتوي, في بعض الأحيان!) تجربة مع.

بخلاف ذلك, العثور على الذاكرة الخاصة بك و مشاكل في الأداء ، والكتابة حاويات مخصصة والخوارزميات.المحكمة الخاصة بلبنان رائع ولكنه ليس حلا سحريا إصلاح جميع المشاكل في جميع الحالات.مجال المعرفة هو افضل حليف.

هل تعتبر الكتابة الخاصة بك مخصص الذاكرة?لا تحتاج دائما إلى تبديل كامل في المحكمة الخاصة بلبنان إذا كنت لا تحب تخصيص الذاكرة الاستراتيجية.جميع الحاويات قبول استبدال مخصص.

هل لمحة رمز القرص تعتبر صغيرة إلى تلك المناطق التي هي المشكلة ؟ أعتقد أنه سيكون أقل إيلاما بكثير من ما كنت تفكر.

الأكثر من ذلك يعتمد على أي حاوية الذي تتحدث عنه ، وكيف يتم استخدامه.ناقلات عادة أصغر البصمة, إلا في هذه اللحظة يمكنك إضافة عنصر خارج الحالي ناقلات القدرات.في تلك اللحظة أنه سيتم تخصيص شيء مثل 1.5 x الحالي ناقلات القدرة على تحريك العناصر (أو في أسوأ الأحوال جعل نسخة جديدة أيضا يخصص الذاكرة) و عندما يتم حذف القديم ناقلات الداخلية, إذا كنت تعرف كيفية العديد من العناصر التي يمكن أن تصمد أمام ناقلات مع استخدام الاحتياطي هو أفضل رهان.

ثاني أصغر قائمة.فإنه لديه ميزة أنه لن تجعل نسخة مؤقتة من نفسها.بعد أن تعيين هو أفضل رهان هو على الارجح تعيين.بعض التنفيذ slist الآن ، وهو أصغر.في هذه الحالات tt من السهل جدا لجعل مخصص حزم ذكرى في صفحات.البقاء بعيدا عن الخنازير الذاكرة مثل unordered_*

على MSVC تأكد من تعريف #_SECURE_SCL=0 وهذا يأخذ الكثير من النفقات العامة المستخدمة في تأمين البرمجة الشيكات (مثل تجاوزات المخزن المؤقت الخ)

إلى حد بعيد الأكثر كفاءة الذاكرة حاويات دفعة/تدخلي هذه صغيرة للغاية أقدام لأنها استخدام الذاكرة من شيء يجري الواردة.حتى instread من الذهاب إلى كومة من أجل قطعة صغيرة من الذاكرة قائمة مرتبطة أو rb شجرة عقدة عقدة المؤشرات هي جزء من الكائن نفسه.ثم "حاوية" هو مجرد الخام واحدة من عدد قليل من مؤشر إلى جعل عقدة الجذر.كنت استخدمه مرات قليلة جدا للتخلص من البصمة و توزيع النفقات العامة.

معظم تطبيقات الخاصة بلبنان ، بما في ذلك واحدة من MSVC2003 هي التي نفذت عام المكتبات.لذلك لن ترى أداء هامة يمبروفمنت من تطبيق واحد إلى آخر.

ولكن في بعض الأحيان يمكنك كتابة خوارزمية (أو حاوية) التي هي أسرع من المحكمة الخاصة بلبنان بالنسبة لك لأنك تعرف شيئا عن البيانات الخاصة بك أن المحكمة الخاصة بلبنان الكاتب لم جديدة (بما كانوا الكتابة العامة والحاويات الخوارزمية).

في الختام إذا كنت ترغب في تحسين التطبيقات العروض من الأفضل محاولة لخلق المتخصصة الحاويات التي تناسب البيانات خصيصا من يبحث عن أكثر performant الخاصة بلبنان.

إذا كان الأداء حرجة جدا إلى التطبيق الخاص بك ، STL هو متشابكة في ذلك ، هل من الممكن أن تجد مفتوح المصدر التنفيذ (مثل STL-ميناء, كما ذكر) وشوكة لنفسك ، إجراء تحسينات في الأداء حسب الحاجة ؟

من ناحية, أستطيع أن أرى هذا يصبح زلق المنحدر حيث يمكنك جعل غير القياسية التعديلات على مفترق المحكمة الخاصة بلبنان المكتبة ، وبالتالي خلق مشاكل.بيد أن أهمية أداء التطبيق الخاص بك قد تفوق احتمال حدوث ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top