سؤال

ونظرت من خلال المواضيع القديمة ولكن لا يمكن العثور على إجابة لسؤالي:

وكيف يمكن لي الوقت الجسم من وظيفتي داخل برنامج C؟

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

المحلول

وهناك طريقة بسيطة لاستخدام 'على مدار الساعة' وظيفة:

#include <time.h>

clock_t start, end;
double cpu_time_used;

start = clock();
... /* Do whatever you want to time */
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

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

time ./myapp

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

نصائح أخرى

وذلك يعتمد على المترجم الخاص بك ونظام التشغيل. على محطات العمل الشمس، اعتدت على استخدام "الأستاذ" أو "gprof". هناك بالتأكيد أداة التنميط لالمترجم الخاص بك، نظام التشغيل، وآلة - فقط جوجل "C الشخصي yourOS yourcompiler" (استبدال اسم نظام التشغيل الخاص بك والمترجم الخاص بك)

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

مثال:


clock_t start = clock();
/* Your code */
printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);

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

Gprof هو حقا سهلة الاستخدام C التعريف، والتي يمكن أن تساعدك على فهم أفضل لمفهوم الأداء.

time ./a.out

وتشغيل أعلى واحد، وسوف يكون الإخراج:

real    0m0.017s
user    0m0.017s
sys 0m0.000s

وreal: مجموع نهاية لهذه الغاية الوقت من خلال برنامج / القيادة اتخذت

وuser: الوقت المستغرق في وضع المستخدم

وsys: الوقت المستغرق في وضع نواة

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

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