windows - مقارنة بداية الباردة إلى بداية دافئة




performance reboot (7)

طلبنا يستغرق وقتا أطول بكثير لإطلاق بعد إعادة التشغيل (بداية الباردة) مما لو كان قد فتح بالفعل مرة واحدة (بداية دافئة).

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

وخلاصة القول أسئلتي هي:

  1. هل واجهت اختلافات في وقت الاطلاق بين يبدأ الباردة والحارة؟
  2. كيف كنت ديلت مع هذه الاختلافات؟
  3. هل تعرف طريقة لمحاكاة الاعتماد على إعادة التشغيل؟

تصحيح:

توضيحات للتعليقات:

  • التطبيق هو في الغالب الأصلي C ++ مع بعض .NET (التجمع .NET الأولى التي يتم تحميلها يدفع ل كلر).
  • نحن نتطلع إلى تحسين وقت التحميل، ومن الواضح أننا فعلنا حصتنا من التنميط وتحسين النقاط الساخنة في التعليمات البرمجية لدينا.

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


أما بالنسبة لمحاكاة إعادة تمهيد، هل نظرت تشغيل التطبيق الخاص بك من جهاز كمبيوتر ظاهري ؟ باستخدام الافتراضية يمكنك تكرار مريح مجموعة من الشروط مرارا وتكرارا.

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


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

في الجهاز الحديث كنت قد حصلت على الذاكرة ومخابئ في كل مكان: هناك النظام الفرعي فم الذي يتم تخزين صفحات الذاكرة للبرنامج، ثم كنت قد حصلت على نظام التشغيل المؤقت تخزين محتويات الملفات في الذاكرة، ثم كنت قد حصلت على على- القرص العازلة من القطاعات على هاردريف نفسه. يمكنك على الأرجح الحصول على مخابئ نظام التشغيل لإعادة تعيين، ولكن المخزن المؤقت على القرص على محرك الأقراص؟ أنا لا أعرف من الطريق.


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

ربما حتى التمسك التوقيت الأساسي إنفورماتينو في التعليمات البرمجية والكتابة إلى ملف سجل وفحص الملفات على بداية الباردة / الدافئة سوف تساعد على تحديد أين التطبيق هو قضاء وقتهم.

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


يمكن أن يكون نيك (بطاقات لان) وأن التطبيق الخاص بك يعتمد على بعض الخدمات الأخرى التي تتطلب الشبكة في الخروج. لذا فإن تصنيف ملفك الشخصي وحده قد لا يخبرك بذلك، ولكن يجب عليك فحص التبعيات الخاصة بطلبك.


وهناك تقنية فعالة جدا لتحسين وقت إطلاق البرد التطبيق هو تحسين ترتيب صلة وظيفة.

يسمح لك فيسوال ستوديو لينكر بتمرير ملف يسرد جميع الوظائف في الوحدة التي يتم ربطها (أو بعضها فقط - لا يجب أن تكون كلها)، وسيضع الرابط تلك الوظائف بجوار بعضها البعض في ذاكرة.

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

تحسين التطبيق الخاص بك حتى كل هذه الوظائف معا يمكن أن يكون فوزا كبيرا.

تحقق من الملف الشخصي الإرشاد الأمثل في فيسوال ستوديو 2005 أو أحدث. واحدة من الشيء ستهات بغو بالنسبة لك هو وظيفة ربط الطلب.

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

هناك بعض مزيد من المعلومات حول بغو هنا:

http://msdn.microsoft.com/en-us/library/e7k32f4k.aspx


كبديل لوظيفة قائمة النظام، مجرد مجموعة التعليمات البرمجية التي سيتم استدعاؤها داخل نفس الأقسام:

#pragma code_seg(".startUp")
 //...
#pragma code_seg

#pragma data_seg(".startUp")
 //...
#pragma data_seg

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

لست متأكدا ما إذا كانت قائمة أوامر الوظائف يمكن أن تحدد المتغيرات العالمية أيضا، ولكن استخدام هذا #pragma data_seg ببساطة العمل.


@ وقال مورتن كريستيانسن :

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

وهذا يجعل العميل دفع لتهيئة التطبيق لدينا في كل التمهيد حتى عندما لا يتم استخدامه، وأنا حقا لا أحب هذا الخيار (لا ريموند ).





reboot