자료구조 과제 - 배운 점 (Mac에서 시간 재는 법)

컴공거북이·2024년 9월 10일

자료구조

목록 보기
2/6

수업시간에 시간 재는 법을 몰라서 애 먹었다 ㅜㅠ
(수업자료는 window버전만 제공해줌... 너무해)
Mac에서도 쓸 수 있는 CLOCKS_PER_SEC 방식을 찾았다.

#include <time.h>

int main(){
    // 걸리는 시간 잴 때 필요한 함수
    clock_t start, end; // 시작시간, 끝나는 시간
    double cpuTimeUsed; // 총 걸린 시간

    //시간재기 시작
    start = clock();
    
    /*
    시간 잴 코드 넣기
    */

    // 시간재기 끝
    end = clock();
    // 걸린 시간 계산
    cpuTimeUsed = ((double)(end - start) / CLOCKS_PER_SEC);
    // 걸린 시간 출력
    printf("cputime = %.10lfs\n", cpuTimeUsed); //단위 : 초
}

start=clock();과 end=clock(); 사이에 시간 잴 코드를 넣어주면 된다 ㅎㅎ

clock() 함수란?
CPU가 사용한 시간을 측정할 수 있는 함수이다.

  • <time.h> 헤더 파일에 정의됨
  • 프로그램이 시작된 이후부터 clock()을 호출한 시점까지의 CPU 시간을 clock_t 타입으로 반환
    -> 즉, clock()을 두 번 호출하고 그 차이를 구하면, 특정 코드 블록이 CPU를 얼마나 사용했는지 측정 가능

CLOCKS_PER_SEC란?
1초 동안 몇 번의 clock tick이 일어나는지를 나타내는 상수

  • 대부분의 시스템에서는 1초 = 1,000,000 tick으로 정의
  • 이 값으로 clock()의 반환값을 나누면 초(second) 단위로 변환 가능
    ex)cpuTimeUsed = ((double)(end - start)) / CLOCKS_PER_SEC;
    이렇게 계산하면 우리가 이해하기 쉬운 초 단위로 결과를 얻을 수 있음

주의)
clock()이 반환하는 값은 CPU 시간이기 때문에, 아주 짧은 코드에서는 정확도가 떨어질 수도 있다.

profile
잘못된 정보가 있을 경우 언제든 댓글로 남겨주세요 :) 감사합니다!!

0개의 댓글