[linux/gcc] clock() 함수 질문이 있습니다.
글쓴이: ekejaqutmqk / 작성시간: 금, 2019/11/29 - 5:30오후
https://github.com/Choi-Jongin/ERICA_JOS
안녕하세요 오픈소스 프로젝트 JOS를 개발중에 있는 학생입니다.
기존 부정확한 1FPS 프로그램에서 가변 프레임을 적용하고 또 임시로 최대 화면 갱신을 초당 30으로 적용했는데
알고 보니 1초가 1초가 아니였습니다..
지금 코드는
while(1)
{
현재시간 = clock()
흐린시간 현재시간 - 이전시간
누적흐른시간 += 흐른시간
if( 누적흐른시간 >= CLOCKS_PER_SEC / FPS )
{
누적흐른시간 -= CLOCKS_PER_SEC/FPS
이번 프레임 수행
}
이전시간 = 현재시간
}
이런 식으로 되어있습니다..
하지만 핸드폰으로 스톱워치 켜고 시간을 측정해보니 핸드폰에서 49초 가량 흘렀을때
컴퓨터 에서 누적된 흐른 시간은 20초가 되더라고요...
이게 어째서 발생한 문제인지
또 gcc c++에서 더 정확한 ms단위 시간 측정 방법이 뭐가 있나 궁금합니다.
전체 소스는 깃허브에 있으며 JOS.cpp와 JOS.h에 해당 로직이 있습니다.
//JOS.h에 정의되어 있으며 JOS.cpp에 있는 메인 루프에서 호출합니다. void UpdateTime() { currenttime = clock(); tick = currenttime-previoustime; previoustime = currenttime; tickInFrame += tick; us += tick; if( us >= ONESEC ) { us -= ONESEC; if( ++sec >= 60 ) { sec -= 60; if( ++min >= 60 ) { min = 60; ++hour; } } } }
Forums:
작성자
테스트를 위해 하나의 파일을 추가로 만들고
이렇게 작성 후 실험해 보았는데
사진처럼 나옵니다..
안녕하세요.
안녕하세요.
clock 함수와 clock_gettime 함수의 manpage를 각각 읽어 보시고 비교해보시면 원하시는 답을 얻으실 것 같네요
답변해주셔서 감사합니다. 한번 적용해보도록 하겠습니다
답변해주셔서 감사합니다.
한번 적용해보도록 하겠습니다
댓글 달기