Portál AbcLinuxu, 10. května 2025 02:47

Dotaz: nefunkční clock()

17.7.2005 22:51 BlackShark | skóre: 15 | blog: windows
nefunkční clock()
Přečteno: 280×
Odpovědět | Admin
Zdravím. Potřebuji do svého programu v C/C++ zahrnout určování přesného času, abych zjistil jak dlouho trvalo vykonání určité operace. Na to my ale sekundy nestačí a tak jsem si našel, že funkce clock() by měla vracet čas procesoru. Ovšem ..
#include < iostream >
#include < time.h >

main()
{
clock_t st1 = clock();
sleep(2);
clock_t st2 = clock();
double dur = (double)(st2-st1)/CLOCKS_PER_SEC;
std::cout<< st1 << std::endl;
std::cout<< st2 << std::endl;
std::cout<< dur << std::endl;
};
...výstupem tohoto programu jsou jen nuly. Dokonce i na internetu jsem pak našel takovýto program. Proč mi nevrací čas ? Je snad na tom jednom příkazu něco blbě ? Jak určit přesný čas ? Za případnou radu předem díky ...
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.7.2005 23:05 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: nefunkční clock()
Odpovědět | | Sbalit | Link | Blokovat | Admin
Termínem processor time je myšlen čas spotřebovaný procesorem (na váš proces) a protože ty dvě sekundy váš proces spal, nemohl spotřebovat (téměř) žádný čas procesoru. Pokud vás zajímá skutečný čas, použijte gettimeofday().
18.7.2005 22:33 BlackShark | skóre: 15 | blog: windows
Rozbalit Rozbalit vše Re: nefunkční clock()
Děkuji za tento příspěvek. Ten procesor time mě nenapadl, že by mohl znamenat toto. Ale mám problém s gettimeofday(). V jakém hlavičkovém souboru je ? Heldal jsem ho, ale v manuálových stránkách není. A přes vyhledávání pomocí grep jsem také úspěšný nebyl. Tedy bych potřeboval pošťouhnout ještě jednou :-).
18.7.2005 23:00 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: nefunkční clock()
#include <sys/time.h>
V manuálových stránkách samozřejmě je -- v něčem jako man-pages nebo manpages-dev, kde jsou i ostatní manuálové stránky funkcí libc a systémových volání.
18.7.2005 23:01 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: nefunkční clock()
Já ho v manu mám viz:
GETTIMEOFDAY(2)            Linux Programmer’s Manual           GETTIMEOFDAY(2)

NAME
       gettimeofday, settimeofday - get / set time

SYNOPSIS
       #include <sys/time.h>

       int gettimeofday(struct timeval *tv, struct timezone *tz);
       int settimeofday(const struct timeval *tv , const struct timezone *tz);
18.7.2005 23:01 petr_p
Rozbalit Rozbalit vše Re: nefunkční clock()
man gettimeofday pravi toto:
GETTIMEOFDAY(2)     Linux Programmer's Manual     GETTIMEOFDAY(2)



NAME
       gettimeofday, settimeofday - get / set time

SYNOPSIS
       #include <sys/time.h>

       int gettimeofday(struct timeval *tv, struct timezone *tz);
       int settimeofday(const struct timeval *tv ,  const  struct
       timezone *tz);
Takze si myslim, ze je to jasne.
18.7.2005 23:03 petr_p
Rozbalit Rozbalit vše Re: nefunkční clock()
Tak to je dobre ;)
18.7.2005 23:08 BlackShark | skóre: 15 | blog: windows
Rozbalit Rozbalit vše Re: nefunkční clock()
Mě man gettimeofday praví : no manual entry. Nicméně, tyto příspěvky mou zvědavost uspokojují zcela. Díky ...
18.7.2005 23:37 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: nefunkční clock()
Je-li informace o používané distribuci v tvém profilu pravdivá, tak máš manuálovou stránku gettimeofday() v balíku man-pages. A nemáš-li, tak to máš rozbitý.
17.7.2005 23:12 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: nefunkční clock()
Odpovědět | | Sbalit | Link | Blokovat | Admin
Já jsem kdysy potřeboval něco podobného a stvořil jsem toto:
#include <stdio.h>
#include <time.h>

void delay_SS(double milisekund)
{
clock_t start, end;
start = clock();
end = start + (clock_t) ((milisekund * (double) CLOCKS_PER_SEC) / (double) 1000);
while ( start < end ) start = clock();

}

int main(void)
{
clock_t start, end;
unsigned int i;

start = clock();

delay_SS(2000);

end = clock();
printf("\nProgram trval: %6.2f sec\n", (end - start) / (double) CLOCKS_PER_SEC);

return 0;

}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.