פונקציית Clock() בשפת C

Pwnqzyyt Clock Bspt C



בזה רמז ללינוקס מאמר, נראה לך כיצד להשתמש ב- שָׁעוֹן() function, אחד המשאבים הזמינים בשפת C, למדידת זמני הביצוע של תהליך או שרשור מסוים.

למרות שקטעי זמן אלו נראים חסרי משמעות, ישנם מקרים קריטיים שבהם היכולת למדוד ולחשב את שברי הזמן הקטנים הללו הם גורמים קריטיים לדיוק המערכת או התהליך עצמו. ניתן תיאור תיאורטי כיצד שָׁעוֹן() עובד, להסביר את פעולתו ואת יחידות המדידה שבהן הוא משתמש למטרה זו.







לאחר מכן, באמצעות דוגמאות מעשיות הכוללות שברי קוד ותמונות, נראה כיצד ניתן ליישם את הפונקציה הזו בצורה ברורה ומפורטת למדידת הזמנים הקריטיים בתהליכים בזמן אמת במערכות שונות.



תחביר פונקציה Clock():



שעון_t שעון ( בָּטֵל )





תיאור הפונקציה Clock() בשפת C

הפונקציה clock() ריקה כאשר קוראים אותה. הוא אינו מכיל ארגומנטים קלט ומחזיר את מספר התיקונים של השעון ב-'clock_t' בזמן השיחה.

ספירת הפולסים מתחילה מאפס עם הפעלת האפליקציה וממשיכה עד שהמשתמש או המערכת יוצאים ממנה, מתאפסת לאפס על ידי הצפת יתר בכל 72 דקות בערך. הפונקציה clock() אינה משנה או שולטת במונה זה; הוא מקבל את הערך שלו רק כאשר קוראים לו.



כדי למדוד את זמן הביצוע הכולל של התוכנית, עלינו לקרוא ל-clock() רק פעם אחת בסוף התוכנית. כדי למדוד את הזמן שחלף מנקודה אחת של התוכנית לאחרת, עלינו לקרוא לפונקציה clock( ) ולחשב את שני הנתונים שהתקבלו.

החישוב לקביעת התיקיות שחלפו בין שתי קריאות של שָׁעוֹן() הפונקציה נעשית על ידי הפחתת התוצאה של השיחה הראשונה מהתוצאה של השיחה השנייה. הבה נסתכל על דוגמה לקביעת כמות הזמן שחלף מנקודה אחת של התוכנית לאחרת.

ה שָׁעוֹן() הפונקציה מוגדרת בפונקציות הכותרת 'time.h'. עלינו לכלול אותו בקובץ הקוד '.c' או '.h' שלנו, כפי שמוצג בתמונה הבאה, כדי להשתמש בו.

#include

כיצד להעביר את תקתוקי השעון שחלף מנקודה אחת בתוכנית לאחרת עם הפונקציה Clock()

בדוגמה זו, נראה כיצד להשיג את מספר התיקיות שחלפו מנקודה אחת בתוכנית לאחרת. שתי נקודות אלו מתאימות לאחת משתי הקריאות ל- שָׁעוֹן() פונקציה, בהתאמה. כדי להבין זאת, בוא נראה את הקוד הבא:





#include

#include



ריק ראשי ( )



{

שעון_ט מתקתק_יני, מתקתק_סוף;

כפולות תקציות;

ticks_ini = שעון ( ) ; // למדוד התחלה

printf ( 'ticks init measure  %ld \n ' , ticcks_ini ) ;

ל ( int א = 0 ; א < = 456450 ; a++ ) ;



ticks_end = שעון ( ) ; // למדוד עצירה

ticks = ticks_end - ticks_ini;

printf ( 'טיקס סוף מידה  %ld \n ' ,  ticks_end ) ;

printf ( 'חלפו קרציות בין מידה  %f \n ' ,  מתקתק ) ;

לַחֲזוֹר ;

}



ראשית, אנו יוצרים את שני המשתנים, ticks_ini ו טיקס_end , שבו אנו מאחסנים את התוצאה של clock() בשתי הקריאות שלו. אנו מחשבים אותו כדי לקבל את מספר התיקים שחלפו ואת המספר השלם קרציות , שבו אנו מאחסנים את התוצאה הסופית של סך כל הקרציות שחלפו.

לאחר מכן, אנו מתקשרים ל- שָׁעוֹן() לתפקד ב'ראשי' שלנו ולאחזר את תקתוקי השעון שהוגדרו קודם לכן ב- ticcks_ini משתנה שחלף מאז תחילת התוכנית ועד הקריאה הראשונה לפונקציה זו. אנו משתמשים בפונקציה printf() כדי להציג ערך זה.

אחרי העיכוב הזה, שיצרנו איתו ל , אנו קוראים ל שָׁעוֹן() פעל בפעם השנייה כדי לקבל את מספר התיקיות עד לנקודה זו. אנו פלט את התוצאה למסך עם הפונקציה printf() . לאחר מכן, אנו מקבלים את התוצאה של המספר המדויק של תקתוקים שחלפו בין הקריאה הראשונה והשנייה אל שָׁעוֹן() על ידי חיסור ticks_ini מ טיקס_end ואחסון התוצאה ב-ticks המשתנים, אותם אנו פלט לקונסולה עם printf().

בדרך זו, אנו מקבלים את התיקיות שחלפו מנקודה אחת לאחרת בקוד.

כיצד להמיר את מספר התיקים שהושגו לשניות עם הפונקציה Clock()

ברגע שיש לנו את מספר התיקונים שחלפו מאז תחילת התוכנית או מנקודה אחת לאחרת, נוכל להמיר את הזמן הזה מבוטא בתיקיות לשניות על ידי חלוקת התוצאה של הדוגמה הקודמת בקבוע המוגדר מראש בזמן.h CLOCKS _PER_ SEC, כפי שמוצג בקטע הבא:

מתקתק = ( טיקס_end - ticcks_ini ) / ( לְהַכפִּיל ) CLOCKS_PER_SEC;

printf ( 'תקציות חלפו בשניות בין מידה  %f \n ' ,  מתקתק ) ;

סיכום

בזה רמז ללינוקס מאמר, הראינו לך כיצד ליישם את שָׁעוֹן() פונקציה כדי לבצע את מדידות הזמן בתיקתוקים של שעון המערכת. הסברנו גם כיצד ניתן למדוד את כל הזמנים הללו או חלקם בתוך האפליקציה הפועלת. הראנו לך כיצד להמיר את התוצאות לשניות. אנו מקווים שמצאת מאמר זה שימושי. אתה יכול למצוא טיפים נוספים על שפת C במאמרים שלנו אותם תוכל למצוא באמצעות מנוע החיפוש של האתר.