🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
7 messages
7 total messages Started by "KrisB" Sun, 08 May 2011 23:22
=?iso-8859-2?Q?Sk±d_dok³adny_zegar_w_C_pod_Win_XP/7_??
#2407
Author: "KrisB"
Date: Sun, 08 May 2011 23:22
8 lines
264 bytes
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)

Krzy�


Re: =?ISO-8859-2?Q?Sk±d_dok³adny_zegar_w_C_pod_W?= =?ISO-8859-2?Q?in_XP/7_??
#2408
Author: Borneq
Date: Mon, 09 May 2011 00:02
11 lines
314 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)
>
> Krzy�


Re: =?ISO-8859-2?Q?Sk±d_dok³adny_zegar_w_C_pod_W?= =?ISO-8859-2?Q?in_XP/7_??
#2409
Author: Borneq
Date: Mon, 09 May 2011 00:09
34 lines
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.

Re: =?ISO-8859-2?Q?Sk±d_dok³adny_zegar_w_C_pod_W?= =?ISO-8859-2?Q?in_XP/7_??
#2410
Author: Borneq
Date: Mon, 09 May 2011 00:13
10 lines
287 bytes
W dniu 2011-05-09 00:09, Borneq pisze:
> dw 310Fh // rdtsc

Kod wzi�ty z programu w Pascalu, kt�ry mia� dzia�a� na bardzo starych
kompilatorach, gdzie nie by�o rdtsc, w nowym C powinna by� ta instrukcja
n: liczba 64 bitowa
     rdtsc
     mov nn, eax
     mov nn[4], edx

=?iso-8859-2?Q?Re:_Sk±d_dok³adny_zegar_w_C_pod_Win_XP/7_??
#2411
Author: "Wiktor S."
Date: Mon, 09 May 2011 07:41
15 lines
502 bytes
> 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)

�aden timer o takiej ROZDZIELCZO�CI nie zapewni ci takiej DOK�ADNO�CI.
Przy mierzeniu algorytm�w mierzy si� cas tysi�ca, miliona, miliarda
iteracji, aby mierzone czasy by�y rz�du sekund, a nie mikrosekund.


--
Azarien


=?iso-8859-2?Q?Re:_Sk±d_dok³adny_zegar_w_C_pod_Win_XP/7_??
#2412
Author: "KrisB"
Date: Mon, 09 May 2011 09:43
21 lines
1362 bytes
U�ytkownik "Wiktor S." <wswiktorSP@Mpoczta.fm> napisa� w wiadomo�ci news:iq7uqe$bj5$1@news.onet.pl...
>> 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)
>
> �aden timer o takiej ROZDZIELCZO�CI nie zapewni ci takiej DOK�ADNO�CI.
> Przy mierzeniu algorytm�w mierzy si� cas tysi�ca, miliona, miliarda iteracji, aby mierzone czasy by�y rz�du sekund, a nie
> mikrosekund.

1) Mam algorytm kt�ry b�dzie wykonywany dla danych rozmiaru max ~na�cie. Wykona si� to w czasie max kilku msek.

2) Co do tych "tysi�cy" pr�b: a jak "odfiltrowa�" koszty samej obs�ugi tych tysi�cy pr�b ? Wywo�anie / obs�uga p�tli / niemiarodajna
zawarto�� cache tj. na og� wi�kszo�� danych przy powtarzaj�cych si� wywo�aniach ju� b�dzie w cache..

PS. Jak pod Win XP/7 uczyni� taki pomiar obiektywny ? Jak i jakie us�ugi wy��czy� ? Mog� wy��czy� firewall, antywirusa, wszystkie
mo�liwe procesy w msconfig, od��cz� kom od sieci, ale to raczej ma�o. Jak zrobi� �eby win na czas pomiar�w nie robi� NIC dodatkowego
a przynajmniej jak najmniej ??? (Na pewno rozumiecie)


Re: =?ISO-8859-2?Q?Sk±d_dok³adny_zegar_w_C_pod_W?= =?ISO-8859-2?Q?in_XP/7_??
#2413
Author: Borneq
Date: Mon, 09 May 2011 10:27
28 lines
1298 bytes
W dniu 2011-05-09 09:43, KrisB pisze:
> PS. Jak pod Win XP/7 uczyni� taki pomiar obiektywny ? Jak i jakie us�ugi
> wy��czy� ? Mog� wy��czy� firewall, antywirusa, wszystkie mo�liwe procesy
> w msconfig, od��cz� kom od sieci, ale to raczej ma�o. Jak zrobi� �eby
> win na czas pomiar�w nie robi� NIC dodatkowego a przynajmniej jak
> najmniej ??? (Na pewno rozumiecie)

Jak nic nie b�dzie chodzi�o to nie powinien czas si� zbytnio
d�u�y�.Mo�na zwi�kszy� priorytet testowanego programu i w�tku :
PriorityClass = GetPriorityClass(GetCurrentProcess);
Priority = GetThreadPriority(GetCurrentThread);
try
{
   SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
   SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
   ...testowanie...
}
finally
{
   SetThreadPriority(GetCurrentThread, Priority);
   SetPriorityClass(GetCurrentProcess, PriorityClass);
}
Pami�taj�c o przywr�ceniu w finally. Mo�na te� wykona� algorytm kilka
razy i uzna� za prawdziwy ten czas, kt�ry jest najmniejszy - zwykle
wi�kszo�� b�dzie podobna do najmniejszego i raz na jaki� czas b�dzie
d�u�ej - zdarza si� to gdy p�tla wykonywana jest d�u�ej, gdzie mo�e si�
przytrafi� ju� przerwanie zegarowe.

Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads