В това Съвет за Linux статия, ще ви покажем как да използвате часовник() функция, един от ресурсите, налични в езика C, за измерване на времето за изпълнение на определен процес или нишка.
Въпреки че тези части от времето изглеждат незначителни, има критични случаи, при които възможността за измерване и изчисляване на тези малки части от време са критични фактори за точността на системата или самия процес. Ще дадем теоретично описание как часовник() работи, обяснява действието му и мерните единици, които използва за тази цел.
След това, използвайки практически примери, които включват кодови фрагменти и изображения, ще видим как можете да приложите тази функция по ясен и подробен начин за измерване на критичните времена в процеси в реално време в различни системи.
Синтаксис на функцията Clock():
clock_t часовник ( невалиден )
Описание на функцията Clock() на езика C
Функцията clock() е празна при извикване. Той не съдържа входни аргументи и връща броя на отметките на часовника в „clock_t“ по време на повикването.
Броят на импулсите започва от нула при стартиране на приложението и продължава, докато потребителят или системата излезе от него, като се нулира при препълване приблизително на всеки 72 минути. Функцията clock() не променя или контролира този брояч; получава своята стойност само при извикване.
За да измерим общото време за изпълнение на програмата, трябва да извикаме clock() само веднъж в края на програмата. За да измерим времето, изминало от една точка на програмата до друга, трябва да извикаме функцията clock() и да изчислим двете получени данни.
Изчислението за определяне на изминалите тикове между две извиквания на часовник() се извършва чрез изваждане на резултата от първото извикване от резултата от второто извикване. Нека да разгледаме пример за определяне на количеството изминало време от една точка на програмата до друга.
The часовник() функцията е дефинирана във функциите на заглавката „time.h“. Трябва да го включим в нашия „.c“ или „.h“ кодов файл, както е показано на следното изображение, за да го използваме.
#includeКак да прехвърлите отметките на изминалия часовник от една точка в програмата до друга с функцията Clock().
В този пример ще видим как да получим броя на изминалите тикове от една точка в програмата до друга. Тези две точки съответстват на едно от двете извиквания на часовник() функция, съответно. За да разберем това, нека видим следния код:
#include
#include
void main ( )
{
clock_t ticks_ini, ticks_end;
двойни отметки;
ticks_ini = часовник ( ) ; // мярка начало
printf ( 'отбелязва начална мярка %ld \н ' , ticks_ini ) ;
за ( вътр а = 0 ; а < = 456450 ; а++ ) ;
ticks_end = часовник ( ) ; // мярка стоп
ticks = ticks_end - ticks_ini;
printf ( 'отбелязва крайна мярка %ld \н ' , ticks_end ) ;
printf ( 'отметки, изминали между измерване %f \н ' , отметки ) ;
връщане ;
}
Първо създаваме двете променливи, ticks_ini и отметки_край , в който съхраняваме резултата от clock() в двете му извиквания. Изчисляваме го, за да получим броя на изминалите отметки и цялото число кърлежи , в който съхраняваме крайния резултат от общите изминали тикове.
След това се обаждаме на часовник() функция в нашата „основна“ и извличане на дефинираните по-рано тиктакания на часовника в ticks_ini променлива, която е изтекла от стартирането на програмата до първото извикване на тази функция. Използваме функцията printf(), за да покажем тази стойност.
След това забавяне, което създадохме с за , наричаме часовник() функция за втори път, за да получите броя на отметките до тази точка. Извеждаме резултата на екрана с функцията printf(). След това получаваме резултата от точния брой тикове, които са изминали между първото и второто извикване на часовник() чрез изваждане ticks_ini от отметки_край и съхраняване на резултата в променливата ticks, която извеждаме на конзолата с printf().
По този начин получаваме тиковете, които са изминали от една точка до друга в кода.
Как да преобразувате броя получени тикове в секунди с функцията Clock().
След като имаме броя тикове, изминали от стартирането на програмата или от една точка до друга, можем да преобразуваме това време, изразено в тикове, в секунди, като разделим резултата от предишния пример на предварително дефинираната константа във времето.h ЧАСОВНИЦИ _PER_ SEC, както е показано в следния фрагмент:
кърлежи = ( ticks_end - ticks_ini ) / ( двойно ) CLOCKS_PER_SEC;printf ( 'отметки, изминали в секунди между измерване %f \н ' , отметки ) ;
Заключение
В това Съвет за Linux статия ви показахме как да внедрите часовник() функция за измерване на времето в тиктакове на системния часовник. Ние също така обяснихме как можете да измервате всички или част от тези времена в рамките на работещото приложение. Показахме ви как да конвертирате резултатите в секунди. Надяваме се, че сте намерили тази статия за полезна. Можете да намерите повече съвети за езика C в нашите статии, които можете да намерите с помощта на търсачката на уебсайта.