2012-06-12 2 views
1

타이밍 기능에 QueryPerformanceCounter()를 사용할 수 있다는 것을 알고 있습니다. 알고 싶어요 :타이머 내부 작업

1 - CPU를 오버 클러킹하여 타이머의 해상도를 높일 수 있습니까? (이 더 빠름)?

2 - 기본적으로 일부 타이머는 다른 타이머보다 정확합니다 (예 : QueryPerformanceCounter()는 GetTickCount()와 비교하여 더 정확합니까)? 마더 보드에 단결정 발진기가있는 경우 다른 타이머에 비해 타이머가 느린 이유는 무엇입니까?

답변

3
  1. QueryPerformanceCounter가 매우 높은 해상도가 - 일반적으로 미만 나노초를. 왜 네가 그걸 늘리고 싶어하는지 모르겠다. 오버 클럭킹은 그것을 증가 시키지만, 오버 클러킹에 대한 매우 약한 이유 인 것처럼 보입니다.

  2. QueryPerformanceCounter은 매우 정확하지만 다소 비싸고 그리 편리하지는 않습니다.
    a. 값 비싼 rdtsc 명령어를 사용하기 때문에 비용이 많이 듭니다. 빨라진 타이머는 메모리에서 정수를 읽을 수 있습니다. 이 정수를 업데이트해야하며 너무 자주하지 않으려 고합니다 (초당 1000 회 합리적입니다). 그래서 우리는 정밀도가 낮은 매우 저렴한 타이머를 얻습니다. 기본적으로 GetTickCount입니다.
    b. 컴퓨터간에 변경되는 단위를 사용하기 때문에 불편합니다. 때로는 나노초, 때로는 반 나노 또는 기타 값이됩니다. 그것은 계산하기가 더 어려워집니다.
    a. 불편 함의 또 다른 원인은 매우 큰 숫자를 반환한다는 것입니다. 숫자가 너무 많아서 수학을 시도 할 때 넘칠 수 있으므로 조심해야합니다.

0

1 - 예, 내부적으로는 더 나은 타이머 중 하나가 rdtsc이며 이는 시계 값을 제공합니다. 이것을 cpuid 명령의 정보와 결합하여 시간을줍니다.

2 - 다른 타이머는 예를 들어 8253 타이머와 같은 다양한 타이밍 소스에 의존합니다.

QPF는 Microsoft에서 rdtsc가 제공하는 것 이상에 추가 된 래퍼입니다. 추가 정보를 원하시면이 기사를 읽기 : http://www.strchr.com/performance_measurements_with_rdtsc

1

QPC의 타이밍 소스는 기계에 따라 다릅니다. 일반적으로 칩셋 어딘가의 주파수에서 픽업됩니다. overclocking cpu가 영향을 미치는지 여부는 마더 보드 설계에 크게 좌우됩니다. 가장 간단한 방법은 QueryPerformanceFrequency를 사용하여 효과를 확인하는 것입니다.

GetTickCount는 완전히 다른 타이머 소스 (클럭 인터럽트도 생성하는 신호)에서 구동됩니다. 매우 정확하지는 않지만 일반적으로 1/64 초입니다. 그러나 매우 정확합니다. 기기는 때때로 시간 서버에 접속하여 시계를 재조정하고 시계 보정 계수를 조정합니다. 어느 정도 일년 내내 정확 해집니다. QPC는 매우 정확하지만 정확하지는 않습니다. 짧은 간격으로 시간을 맞추기 위해서만 사용하십시오.

관련 문제