سؤال

هل من الممكن تحديد الإنتاجية من تطبيق على معالج من التهم دورة (تعليمات معالج دورات) يستهلكها التطبيق ؟ إذا كان الجواب نعم, كيفية حساب ذلك ؟

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

المحلول

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

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

نصائح أخرى

بسيط:

#include <time.h>
clock_t c;
c = clock(); // c holds clock ticks value
c = c / CLOCKS_PER_SEC; // real time, if you need it

لاحظ أن القيمة التي تحصل عليها هي تقريب ، لمزيد من المعلومات راجع clock() صفحة الرجل.

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

إذا كنت تستخدم Cortex-M3 من TI/النجم الصغير, يمكنك الاستفادة من driverlib ألقاها TI/النجم الصغير.باستخدام SysTick الوظائف يمكنك تعيين SysTickPeriod 1 المعالج دورة:بحيث يكون لديك 1 ساعة المعالج بين المقاطعات.عن طريق حساب عدد من المقاطعات يجب أن تحصل على "بالقرب بما فيه الكفاية تقدير" على كم من الوقت وظيفة أو دالة كتلة تأخذ.

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