2011-10-22 2 views

답변

2

이것은 언어와 관련이 없습니다.

당신이 사용하는 함수가 구현되는 방식 ... OS에서 사용 가능한 API와 다른 점 (다른 API 함수는 다른 정확도를 가질 수 있습니다)을 사용하고 실행중인 하드웨어와 ...

2

대부분의 시간 기능에는 언어와 상관없이이 문제가 있습니다. 여기에는 GetTickCount과 현재 시간을 알려주는 함수가 포함됩니다.

timeBeginPeriod을 사용하면 해당 간격을 1ms로 줄일 수 있지만 전역 효과가 있으며 전력 소비가 증가 할 수 있습니다. 따라서 가능하면 피해야합니다.

정밀도가 높은 타이밍을 지원하는 API는 QueryPerformanceCounter이지만 일부 (버그가 많은) 하드웨어의 여러 코어 간의 비동기 성 같은 문제가 있습니다.

2

이것은 아마도 운영 체제 문제 일 수 있으므로 운영 체제 커널과 동일한 방식으로 다른 언어로 인터페이스 할 수 있습니다.

Windows는 사용하지 않았지만 Linux 시스템에서는 CONFIG_HIGH_RES_TIMERS 및 기타와 같은 커널 및 구성 매개 변수에 따라 다릅니다.

소문에 의하면 Windows는 Linux보다 이러한 문제에 훨씬 취약하다고합니다.

아마도 GNU/Linux를 사용해 볼 수 있습니까? 항상 흥미로운 경험이며, 가장 중요한 것은 무료 소프트웨어이며 이는 연구으로 개선 할 수 있음을 의미합니다. 마지막으로 확인한 시간에 Windows에이 속성이 없으므로 사용하지 않습니다.

+0

나는 리눅스를 좋아하지만, 중요한 소프트웨어 (예 : QQ)에는 리눅스 버전이 없다. 그래서 내가 언젠가 페도라를 시도했지만 마침내 윈도우로 돌아갔다. ( – Freewind

1

시간을 millis 대신 nanoTime으로 설정할 수 있습니다. millis의 문제점은 일부 시스템에서는 시계가 한 시간에 10 밀리 초씩 흐트러 질 수 있고, Windows는 일주일에 한 번만 NTP 동기화를 수행한다는 것입니다.

관련 문제