Toon posts:

[SUN][C++] Algoritme timen in millesec

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

ik heb een algoritme geschreven in zowel java als c++, maar nu lukt het me niet om in C++ bij te houden hoelang mijn algoritme over een bepaalde bewerking doen.

Als ik time() gebruik gaat hij alleen op de seconde nauwkeurig...

weet iemand hoe ik dit kan verbeteren ??

bvd Michel

Verwijderd

Het beste is om het stuk programma een keer of 100/1000 uitvoeren zodat je gewoon kunt meten in seconden.
En je minder last hebt van onnauwkeurigheden veroorzaakt door de opstart tijd en eventuele garbage collection.

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Probeer eens als je het uitvoert het als argument aan time mee te geven ?
Dus :
code:
1
2
3
sh$ gcc test.c -o test
sh$ time ./test
>> Ouput van time hoeveel ms hij bezig is geweest

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 07:54
Op maandag 17 juni 2002 21:58 schreef XTerm89D het volgende:
Probeer eens als je het uitvoert het als argument aan time mee te geven ?
Dat is alleen een geschikte methode voor operaties die meer dan enkele honderden milliseconden duren, omdat het starten en opruimen van het proces anders veel te veel tijd kost, zoals borganism terecht al opmerkte.

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Op maandag 17 juni 2002 21:59 schreef Soultaker het volgende:

[..]

Dat is alleen een geschikte methode voor operaties die meer dan enkele honderden milliseconden duren, omdat het starten en opruimen van het proces anders veel te veel tijd kost, zoals borganism terecht al opmerkte.
Time geeft niet alleen de totale tijd, maar ook user en real tijden mee. Ik denk dat user de tijd is gespendeerd aan het uitvoeren van de applicatie.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 07:54
Op maandag 17 juni 2002 22:09 schreef XTerm89D het volgende:
Time geeft niet alleen de totale tijd, maar ook user en real tijden mee. Ik denk dat user de tijd is gespendeerd aan het uitvoeren van de applicatie.
Op zich wel, maar het opstarten en initialiseren van een C++ applicatie brengt een zekere hoeveelheid werk (in user time) met zich mee. Je zult bovendien gegevens moeten inladen e.d. om een zeker onderdeel in kwestie te kunnen testen. Deze tijd kun je niet eenvoudig aftrekken, dus moet je er voor zorgen dat deze te verwaarlozen is.

Verwijderd

Topicstarter
Wat betreft het gebruik van time apl tijdens het opstarten hebben jullie gelijk, maar dit is ook niet mijn probleem, ik zat te denken aan iets van

time begin;

algoritme

time eind;

cout << eind-begin...

dan kan ik de gegevens namelijk meteen met de uitwerkingen van de apllicatie opslaan in een tekst bestand. In ieder geval al vast bedankt, maar als jullie nog wat weten, graag...

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op maandag 17 juni 2002 22:29 schreef harttcore het volgende:
Wat betreft het gebruik van time apl tijdens het opstarten hebben jullie gelijk, maar dit is ook niet mijn probleem, ik zat te denken aan iets van

time begin;

algoritme

time eind;

cout << eind-begin...

dan kan ik de gegevens namelijk meteen met de uitwerkingen van de apllicatie opslaan in een tekst bestand. In ieder geval al vast bedankt, maar als jullie nog wat weten, graag...
Dit is toch al vertelt in de eerste reply :?
code:
1
2
3
4
time begin;
algoritme 100x
time eind;
cout << eind-begin...

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 07:54
In dat geval zou ik gewoon van hetzelfde mechanisme gebruik maken als time intern doet, namelijk de (C) functie getrusage(). Ik kan alleen niet bevestigen dat die ook in Windows aanwezig is. Onder Windows kun je misschien een performance counter of multimedia timer gebruiken.

Een wat minder nauwkeurige (maar portable) waarde kan met clock() verkregen worden, hoewel de resolutie daarvan nogal laag kan liggen (rond de 10 ms, zie de manual/headerfiles voor de precieze waarde).
Pagina: 1