Article View: pl.comp.lang.asm
Article #2409Re: =?ISO-8859-2?Q?Sk±d_dok³adny_zegar_w_C_pod_W?= =?ISO-8859-2?Q?in_XP/7_??
From: Borneq
Date: Mon, 09 May 2011 00:09
Date: Mon, 09 May 2011 00:09
34 lines
1247 bytes
1247 bytes
W dniu 2011-05-08 23:22, KrisB pisze: > Potrzebuj� zrobi� por�wnanie czasu wykonania algorytm�w pod Visual C++ i > Win XP/7. > > Funkcja C time( time_t) z rozdzielczo�ci� do milisekund mi nie > wystarcza-potrzebuj� rozdzielczo�ci gdzie� do mikrosekund. (mo�e by� > wstawka asm) QueryPerformanceCounter chodzi z cz�stotliwo�ci� oko�o 3 MHz ale lepiej odczyta� t� cz�stotliwo�� za pomoc� QueryPerformanceFrequency. Je�li by to nie wystarczy�o mo�na u�y� wstawki assemblerowej RDTSC kt�ra mierzy pojedyncze takty CPU (!) i jej wywo�anie trwa bardzo kr�tko. Nale�y jednak pami�ta� �e na wielordzeniowych procesorach (wielu procesorach) g�upio si� zachowuje, bo ka�dy rdze� ma sw�j w�asny taktomierz, kt�re si� rozje�dzaj�. Aby wi�c zmierzy� w�tek/proces nn rekord typu 64 bitowego _asm{ dw 310Fh // rdtsc mov nn.Lo, eax mov nn.Hi, edx } proceura do mierzenia _asm { dw 310Fh // rdtsc sub eax, nn.Lo sbb edx, nn.Hi mov nn.Lo, eax mov nn.Hi, edx } nale�y ustawi� aby by� wykonywany tylko przez jeden rdze�: SetProcessAffinityMask(GetCurrentProcess(), 1); inaczej ma si� dziwne wyniki.
Message-ID:
<iq74b6$p7q$1@news.onet.pl>
Path:
polish.pugleaf.net!archive.newsdeef.eu!mbox2nntp-pl.comp.lang.asm.mbox.zip!g2news1.google.com!news3.google.com!feeder.news-service.com!feeder.erje.net!news2.arglkargh.de!news.n-ix.net!news.belwue.de!news.uni-stuttgart.de!news.nask.pl!news.nask.org.pl!news.cyf-kr.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.POSTED!not-for-mail
References:
<iq71hq$q7r$1@inews.gazeta.pl>