Cần giải thích code hàm đo thời gian trong C

Em chào m.n ạ em mới học lập trình C mà gặp đoạn code này không hiểu mong mọi người giúp đỡ

void tickOneSecond()
{
    clock_t start;
    int pauseLength = 1000;
    
    start = clock();
    while( clock() < start + pauseLength )
        ; // pause for pauseLength
}

Hàm clock() trả về giá trị kiểu clock_t. Nó sẽ trả về số tíc tắc mà chương trình đã chạy qua. Muốn tính số giây thì lấy số tíc tắc chia cho CLOCKS_PER_SEC. Hình như trên win 32 là bằng 1000 thì phải. Muốn biết bao nhiêu cứ in ra là biết. Anh chạy thử đoạn code dưới đây và thay đổi pauseLenght thành các giá trị khác sẽ hiểu : (Nhớ đếm thử time chạy của code xem đúng không)

#include <stdio.h>
#include <time.h>

void tickOneSecond()
{
   clock_t start;
   int pauseLength = 3500;
   
   start = clock();
   while( clock() < start + pauseLength )
       ; // pause for pauseLength
}

int main(){
   clock_t start, end;
   float time;
   start = clock(); // get current time
   printf("start : %ld " , start );
   tickOneSecond() ;
   end = clock(); // get current time
   printf("\nend : %ld " , end);
   
   time = (float)(end - start) / CLOCKS_PER_SEC;
   printf("\ntime run : %f" , time);
   printf("\nCLOCKS_PER_SEC : %ld" , CLOCKS_PER_SEC);
}

Code được code trên smartphone và chưa run nên không dám chắc về tính đúng sai :man_facepalming: . Ai thấy sai đâu sửa giúp em.
Ngoài lề : Anh bảo mới học C mà đã mò đến thư viện time.h vậy ạ

3 Likes

Cảm ơn bạn nhé mình hiểu rồi ,à mình đang làm bài tập trên mạng mà lời giải nó vậy nên đọc ko hiểu

2 Likes

sleep(1000); (1000ms) là gọn đẹp rồi. Chương trình ngủ 1000ms :smiley:

Vấn đề thứ nhất là số 1000 này là 1000 gì?
Thứ hai là nó chiếm mất 1 core.

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?