WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Fast!

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Fast!
maxvid опубликован 08-11-2001 06:41 MSK   Click Here to See the Profile for maxvid   Click Here to Email maxvid  
Есть две функции которые делают одно и тоже,
нужно померять какая из них работает быстрее.

У Шилда нашел такой примерчик:
#include <iostream.h>
#include <time.h>
class timer {
clock_t start;
public:
timer(); // конструктор
~timer(); // деструктор
};

timer::timer(){ start=clock();}

timer::~timer()
{
clock_t end;
end=clock();
cout << "Затраченное время: " << (end-start) / CLK_TCK <<"\n";
}

main()
{
timer ob;
char c;
// Пауза ...
cout << "Нажмите любую клавишу, затем ENTER: ";
cin >> c;
return 0;
}

Он позволяет померять в секундах,
если на CLK_TCK не делить, то в милисекундах.

Так вот, каким образом можно померять время с более высокой точностью??

x опубликован 08-11-2001 07:23 MSK     Click Here to See the Profile for x  Click Here to Email x     
смотри RDTSC

пример функции (я ее для кваки писал)
точность=пара десятков тиков проца
/*
================
Sys_DoubleTime
================
*/
//rm mod
double Sys_DoubleTime (void)
{
double t;
static int starttime;

static int bTimeInit=false;
static __int64 frequency;
static __int64 starttick;
__int64 tick;

if (!bTimeInit)
{
struct _timeb tstruct;
DWORD stck,etck;
__int64 stckL,etckL;

_ftime( &tstruct );
starttime = tstruct.time;
_asm {
rdtsc
lea ebx,starttick
mov [ebx],eax
mov [ebx+4],edx
}
stck=GetTickCount()+2;
etck=stck+5000;

while (GetTickCount()<stck) ;
_asm {
rdtsc
lea ebx,stckL
mov [ebx],eax
mov [ebx+4],edx
}
Sleep(4900);
while (GetTickCount()<etck) ;
_asm {
rdtsc
lea ebx,etckL
mov [ebx],eax
mov [ebx+4],edx
}

frequency=(etckL-stckL)/5;

bTimeInit=true;
}


_asm {
rdtsc
lea ebx,tick
mov [ebx],eax
mov [ebx+4],edx
}
t=starttime;
t+=(1.0*(tick-starttick))/(1.0*frequency);

return t;
}

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.