Portál AbcLinuxu, 12. května 2025 08:21

Dotaz: clock(); vraci nulu

28.3.2006 13:08 Martin
clock(); vraci nulu
Přečteno: 70×
Odpovědět | Admin
Resim takovy problem, at delam co delam, clock() mi stale vraci nulu. Snazim se to pouzit v klasickem kodu:
clock_t t1=clock();
// tady neco pocitam
// prozatim tu je system("rxvt");
clock_t t2=clock();
std::cout << (t2-t1)/(double)CLOCKS_PER_SEC << std::endl;
Nevite kde je chyba? Prekladam to g++ 4.0.1. Dela mi to na dvou pocitacich. Diky za nakopnuti.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Heron avatar 28.3.2006 13:31 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: clock(); vraci nulu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nemůže to být tím, že ta činnost zabere CPU tak málo času, že to po vydělení vrací nulu? Resp. zkusil jste vypsat t1 a t2 zvlášť?

man 3 clock
Heron
28.3.2006 13:47 Marti
Rozbalit Rozbalit vše Re: clock(); vraci nulu
Ano, to jsem zkusil, nula. Ta cinnost je dostatecne dlouha aby se alespon neco namerilo, ale vzhledem k tomu, ze t1 i t2 nastavi clock() na nulu, je delka provadeni irelevantni. S g++ 3.4 stejny vysledek.
28.3.2006 14:16 Martin
Rozbalit Rozbalit vše Re: clock(); vraci nulu
Uz to funguje. Herout "nezklamal", pise, ze clock() "vraci pocet tiku procesoru" jenze opomnel dodat "measured in units of CLOCKS_PER_SEC". Takze pokud kod nebezi opravdu dlouho (radove vice nez vterinu, ci dve na mem stroji) t2 bude take nula a nejake deleni uz nema co pokazit.

Diky.
28.3.2006 15:16 michich
Rozbalit Rozbalit vše Re: clock(); vraci nulu
clock() změří klidně i zlomky sekundy, ale měří pouze čas skutečně procesem spotřebovaný. Jestli proces většinu času prospí, tak se mu tento čas nezapočítává.

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.