تمكين سمات XP المرئية / الأنماط البصرية تقتل الأداء

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

  •  13-09-2019
  •  | 
  •  

سؤال

أثناء محاولة تحديث مظهر تطبيق Builder / Delphi القديم، قمت بتمكين السمات البصرية (الأساليب البصرية) وفاجأت بمقدار ما يضاف مواضيع ضرب الأداء. على سبيل المثال، بالنسبة لصفحة الإعداد الأساسية (علامة تبويب 11 علامة تبويب، 200 تحكم لا نريد إعادة الإعادة الآن لأسباب زمن التطوير وإعادة التدريب):

  • بدون مواضيع ممكنة: ~ 0.1 ثانية لإنشاء النموذج وضوابطها (كما تم قياسها بواسطة QueryPerformancounter)، ~ 0.9 ثانية من النقر فوق عنصر القائمة إلى النموذج الذي يتم عرضه (كما تم قياسه بواسطة ساعة توقيت). ليس ملحوظا حقا للمستخدم النهائي.
  • مع مواضيع ممكنة: ~ 0.6 ثانية لبناء النموذج وضوابطها، ~ 1.5 ثانية من النقر فوق عنصر القائمة إلى النموذج الذي يتم عرضه. ملحوظ جدا للمستخدم النهائي.

أحصل على نتائج مماثلة على كل من سطح مكتب Windows XP و Windows 7 VM.

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

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

المحلول

رائع. لست متأكدا من أن لدي 200 عنصر ضوابط على شكل واحد. إليك بعض الاقتراحات.

  • قد يكون هذا حالة خاصة تريد إنشاء مربع الحوار بمجرد بدء تشغيل التطبيق وعرضه عند الحاجة بدلا من إنشاءه عند الطلب.

  • أود أن أنظر أيضا إلى ما يجري في المنشئ أو حدث onshow. هل تملأ أي قوائم حيث ستكون BeginUbdate / indupdate ميزة؟

  • هل لديك أي رمز في حدث OnResize أو مشابه يتم إطلاقه أكثر من مرة يمكن أن ينتظر حتى بعد إنشاء النموذج ويتم تشغيله مرة واحدة؟

  • أي نوع من الضوابط التي تستخدمها؟ إذا كان هناك نوع واحد من دهانات التحكم ببطء خاصة، فقد تكون قادرا على استبدالها بأخرى ترسم بسرعة أكبر. هذا سيتطلب بعض الاختبارات، رغم ذلك.

نصائح أخرى

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

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