Clock () الوظيفة في لغة سي

Clock Alwzyft Fy Lght Sy



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

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







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



الساعة () تركيب الوظيفة:



clock_t على مدار الساعة ( فارغ )





Clock () وصف الوظيفة بلغة C.

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

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



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

الحساب لتحديد العلامات المنقضية بين مكالمتين من ساعة حائط() تتم الوظيفة عن طريق طرح نتيجة المكالمة الأولى من نتيجة المكالمة الثانية. دعونا نلقي نظرة على مثال لتحديد مقدار الوقت المنقضي من نقطة واحدة في البرنامج إلى أخرى.

ال ساعة حائط() يتم تعريف الوظيفة في وظائف رأس 'time.h'. يجب علينا تضمينه في ملف الكود '.c' أو '.h' الخاص بنا ، كما هو موضح في الصورة التالية ، من أجل استخدامه.

# تضمين

كيفية الحصول على دقات الساعة المنقضية من نقطة واحدة في البرنامج إلى أخرى باستخدام وظيفة Clock ()

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





# تضمين

# تضمين



الرئيسية باطلة ( )



{

Clock_t ticks_ini ، ticks_end ؛

القراد المزدوج

ticks_ini = الساعة ( ) ؛ // بدء القياس

printf ( 'العلامات الأولية للقياس٪ ld ' ، ticks_ini ) ؛

إلى عن على ( int أ = 0 ؛ أ < = 456450 ؛ أ ++ ) ؛



ticks_end = الساعة ( ) ؛ // وقف التدبير

القراد = ticks_end - ticks_ini ؛

printf ( 'علامات نهاية المقياس٪ ld ' ، ticks_end ) ؛

printf ( 'علامات التجزئة المنقضية بين المقياس٪ f ' ، القراد ) ؛

إرجاع ؛

}



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

ثم نسمي ساعة حائط() تعمل في 'main' الخاصة بنا واسترداد علامات الساعة المحددة مسبقًا في ticks_ini المتغير الذي انقضى منذ بداية البرنامج حتى أول استدعاء لهذه الوظيفة. نستخدم وظيفة printf () لعرض هذه القيمة.

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

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

كيفية تحويل عدد القراءات التي تم الحصول عليها إلى ثوان باستخدام وظيفة Clock ()

بمجرد أن نحصل على عدد العلامات التي انقضت منذ بدء البرنامج أو من نقطة إلى أخرى ، يمكننا تحويل هذا الوقت المعبر عنه في علامات التجزئة إلى ثوانٍ بقسمة نتيجة المثال السابق على الثابت المحدد مسبقًا في الوقت. h الساعات _PER_ SEC ، كما هو موضح في المقتطف التالي:

القراد = ( ticks_end - ticks_ini ) / ( مزدوج ) CLOCKS_PER_SEC ،

printf ( 'علامات التجزئة المنقضية بالثواني بين المقياس٪ f ' ، القراد ) ؛

استنتاج

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