2011-09-02 15 views
5

Czytałem trochę o problemach i nieścisłości implementacji QPC. Ale wszystkie te dyskusje i artykuły wydają się raczej nieaktualne.Status QueryPerformanceCounter?

Ktoś wie, jaki jest aktualny status funkcji QPC w najnowszym systemie operacyjnym Win7 OS i procesorze Intel/AMD? Czy były jakieś ulepszenia? Czy np. Turbo Boost wciąż jest dużym problemem?

Jestem głównie zainteresowany tym, ponieważ muszę zdecydować między wykorzystaniem timeGetTime i QueryPerformanceCounter na czas w mojej aplikacji.

+1

Co dokładnie przeczytałeś? –

+0

QPC jest stabilna już od dłuższego czasu. Kwestie rozdzielczości i dokładności są zasadniczo specyficzne dla maszyny, która nigdy się nie zmieni. –

+0

@Hans: Dobrze słyszeć, że QPC jest stabilna. Jaki jest jednak stan problemów związanych z maszyną? Czy wciąż jest powszechne w przypadku takich problemów z nowoczesnym sprzętem? – ronag

Odpowiedz

4

QPC była łatana po stronie oprogramowania przez microsoft przed wiekami (stary artykuł na temat problemu: http://support.microsoft.com/kb/895980). Ta poprawka może zostać zainstalowana w dowolnym docelowym systemie dla pewności (widziałem kilka gier robiących to), jednak nie powinna być potrzebna. Wszystkie nowsze procesory mają sprzętową kompensację/kompensację, a także prawidłowe synchronizowanie TSC między rdzeniami, więc problemy z zegarami opartymi na RDTSC są wyeliminowane. Hot-fix można zdobyć stąd: http://support.microsoft.com/?id=896256 Nie jestem pewien, czy jest coś dla innych systemów, ale z jego wyglądu ta poprawka była inheirent w Windows Vista i Windows 7 opartych na systemach operacyjnych. Jeśli chodzi o kwestię dokładności, zależy to od samego sprzętu, jednak Microsoft twierdzi, że QPC to najbardziej dokładny zegar, jaki można uzyskać (z przyzwoitą wydajnością), a więc mało inline __rdtsc(), wątpię, aby uzyskać dokładniejsze dane.