Gå til innhold

Ta tiden på en funksjon


Anbefalte innlegg

Driver å lager et program for å regne ut kvadratroten av et tall uten å bruke sqrt()-funksjonen.

 

For å ta tiden på denne funksjonen, har jeg brukt time(0) før og etter funksjonen begynner og så trukket de fra hverandre.

Problemet er bare at denne funksjonen ikke måler lavere enn i sekunder,

og funksjonen bruker jo ikke så lang tid på å regne det ut.

 

Er det noen som vet om en funksjon som måler millisekunder,

eller eventuelt en annen måte å gjøre dette på?

Lenke til kommentar
Videoannonse
Annonse

Regner med at det egentlig ikke er dette du er ute etter men.

Hvis du har wxWidgets satt opp går det ann å bruke disse funksjonene:

::wxStartTimer

void wxStartTimer()

 

Starts a stopwatch; use ::wxGetElapsedTime to get the elapsed time.

 

See also wxTimer.

 

Include files

 

<wx/timer.h>

og

::wxGetElapsedTime

long wxGetElapsedTime(bool resetTimer = true)

 

Gets the time in milliseconds since the last ::wxStartTimer.

 

If resetTimer is true (the default), the timer is reset to zero by this call.

 

See also wxTimer.

 

Include files

 

<wx/timer.h>

 

Edit: Skrevet litt feil.

Endret av zirener
Lenke til kommentar

i 'time.h' fins det en funksjon kalt clock_t.

 

#include <iostream> // for cout og endl
#include <time.h>  // for clock_t og clock()

using namespace std;

int main()
{
   // Variabler   
   char test[100000];
   clock_t start;
   clock_t end;    
   // Operasjoner
   start = clock();
       cout << "Skriv: Ibsens ripsbusker og andre buskvekster " << endl;
       cin >> test;
   end = clock();
   cout << "Det tok " << (end-start) 
   << " millisekunder å utføre operasjonen" << endl;
   cout << "Skriv ett eller annet og trykk ENTER for å avslutte!" << endl;
   int a; cin >> a;
   return 0;
}

:)

Lenke til kommentar
den tar tiden på hvor lang tid prosessoren din bruker for å prosessere tallene... ergo vil små tall ta liten tid og større tall ta lengre tid :roll:

 

Edit: millisekunder ja

Selvfølgelig, men jeg synes det var litt rart at den, hvis den ikke bruker 0 millisekunder, alltid bruker x*10^5 sekunder på en operasjon,

og aldri tall som f.eks. 17352 millisekunder.

Hvis den ikke kan gi mer nøyaktige tall en x*10^5, kan jeg jo like godt bruke

en funksjon som teller sekunder, som vil gi 10 ganger så nøyaktig svar.

Lenke til kommentar

Den beste måten å måle tiden på en funksjon er vel å putte den i en loop som kjører den gjentatte ganger og så dele resultatet på antall ganger den blir loopet.

For å ta hensyn til loop overhead kan du jo også kjøre loopen tom, og trekke dette resultatet fra det andre.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...