[ Nedeljko @ 09.07.2008. 08:17 ] @
Zanima me kako bih ocitao uptime vreme ili bilo koje drugo vreme koje korisnik racunara ne moze da promeni promenom vremena na casovniku racunara ili na neki drugi nacin. Unutar jednog procesa (i njegovih niti i procesa potomaka) treba da znam koliko je vremena proteklo izmedju dva dogadjaja, a da me korisnik ne zezne.

Ciljne platforme su Linux i Windows. Pozeljno je, ali ne i obavezno, da metod bude portabilan. Drugim recima, ako mogu da napisem funkciju (jezik je C++) koja bi radila na obe platforme, super, a ako ne mogu, nema veze, napisacu pod svakim sistemom zasebnu funkciju.
[ itf @ 09.07.2008. 08:39 ] @
Probaj ovako:

Code:
#include <time.h>

clock_t start, kraj;
start = clock();
// operacije..
kraj = clock();


Oduzmeš kraj i start i dobiješ provedeno vrijeme u milisekundama. Vrlo je precizno i neovisno o sistemskom vremenu.


[ Nedeljko @ 09.07.2008. 11:59 ] @
Hvala. No, ovo mi jos ne resava problem jer treba da radim sa preciznoscu od najmanje mikrosekunde (po mogucstvu sa nanosekindama, ako je moguce) dok je konstanta CLOCKS_PER_SEC na Windows platformi jednaka 1000 pod kompajlerima MinGW g++, Borland freecommandline tools bcc32 v5.5 i Microsoft Visual C++ 2008 Express Edition (Visual C++ 9.0 Express Edition). Na Linux platformi u g++ kompajleru je CLOCKS_PER_SEC jednako 10^6, sto je zadovoljavajuce (mada ne i idealno).

Druga stvar je sto bih malo vise voleo da vreme koje merim bude isto za sve pokrenute procese (npr. uptime ili tako nesto) mada i ovo obavlja posao.
[ kiklop74 @ 09.07.2008. 14:13 ] @
http://www.codeproject.com/KB/recipes/precisetimer.aspx
[ X Files @ 09.07.2008. 14:24 ] @
Za Windows pogledati i ovde:
http://www.elitesecurity.org/t112204-0#770480

Ili ovde (autor je nas Dragi Tata)
http://www.codeproject.com/KB/system/timers_intro.aspx
[ deerbeer @ 09.07.2008. 15:44 ] @
CBaseReferenceClock iz klase DirectShow multimedijalnih tajmera :
http://msdn.microsoft.com/en-us/library/ms780534(VS.85).aspx
Vremenska jedinica je REFERENCE_TIME (100 ns) ako hoces preciznost u nanosekundama
Evo i primera :
http://www.codeguru.com/cpp/cp...me/routines/article.php/c6369/




[ Nedeljko @ 10.07.2008. 08:25 ] @
Hvala, to je to. Na Linux platformi ovo ovavlja posao:

Code:

#include <iostream>
#include <ctime>

using namespace std;

int main()
{
    timespec t;
    clock_gettime(CLOCK_MONOTONIC, &t);
    cout << "Proslo je " << t.tv_sec << " sekundi i " << t.tv_nsec << " nanosekundi." << endl;
    return 0;
}


Naravno, konsultovati man clock_gettime ili potraziti clock_gettime na internetu.