/**************/ /* timer.c */ /****************************************************************************/ /* ** Aliohjelmia ajanottamista varten. ** start_timer ** stop_timer ** ** Vesa Lappalainen 7.9.1992 ** ** Käyttäminen: ** Lisää projektiin: ** timer.c ** Lisää includeihin: ** #include "timer.h" ** ** Käynnistä timer kutsulla: ** start_timer(n); // n luku 0 - MAX_TIMER-1 ** Ota loppuaika tai väliaika (sek) kutsulla: ** dvar = stop_timer(n); ** ** HUOM! Ohjelmasta on kaksi versiota. TurboC -versio ottaa aikoja ** 1/18 sekunnin tarkkuudella (sadasosat mukana, virhe +/- 0.06 sek) ** Muiden kääntäjien versio käyttää ANSIin time.h -pakettia ** ja antaa tuloksen sekunneissa, joten sadasosat on aina 0. ** HUOM! Ajastimet eivät toistaiseksi ota huomioon niiden itsensä kutsuun ** käytettyjä aikoja. ** ----------------------------------------------------------------------------*/ #ifdef __TURBOC__ /* Turbo C:n versio ***************************************/ #include #include "timer.h" static struct time t1[MAX_TIMER],t2[MAX_TIMER]; /****************************************************************************/ static double timediff(struct time *t2, struct time *t1) { double s2,s1; s2 = (double)t2->ti_hour*60.0*60 + 60.0*t2->ti_min + t2->ti_sec + t2->ti_hund/100.0; s1 = (double)t1->ti_hour*60.0*60 + 60.0*t1->ti_min + t1->ti_sec + t1->ti_hund/100.0; return s2-s1; } /****************************************************************************/ void start_timer(int i) { if ( i >= MAX_TIMER ) i = MAX_TIMER-1; if ( i< 0 ) i = 0; gettime(&t1[i]); } /****************************************************************************/ double stop_timer(int i) { if ( i >= MAX_TIMER ) i = MAX_TIMER-1; if ( i< 0 ) i = 0; gettime(&t2[i]); return timediff(&t2[i],&t1[i]); } #else /*************************** Muut kääntäjät: **************************/ #include #include "timer.h" #include "time.h" static time_t t1[MAX_TIMER],t2[MAX_TIMER]; /****************************************************************************/ void start_timer(int i) { if ( i >= MAX_TIMER ) i = MAX_TIMER-1; if ( i< 0 ) i = 0; t1[i] = time(NULL); } /****************************************************************************/ double stop_timer(int i) { if ( i >= MAX_TIMER ) i = MAX_TIMER-1; if ( i< 0 ) i = 0; t2[i] = time(NULL); return difftime(t2[i],t1[i]); } #endif