<BøNilzen> Skrevet 28. september 2004 Del Skrevet 28. september 2004 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
Dead_Rabbit Skrevet 28. september 2004 Del Skrevet 28. september 2004 (endret) 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: ::wxStartTimervoid wxStartTimer() Starts a stopwatch; use ::wxGetElapsedTime to get the elapsed time. See also wxTimer. Include files <wx/timer.h> og ::wxGetElapsedTimelong 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 28. september 2004 av zirener Lenke til kommentar
<BøNilzen> Skrevet 28. september 2004 Forfatter Del Skrevet 28. september 2004 Nei, jeg skriver bare konsoll. Men jeg regner med at det ligger noe i <ctime> - biblioteket. ps. skriver du quote istedet for qoute så virker det... Lenke til kommentar
Dead_Rabbit Skrevet 28. september 2004 Del Skrevet 28. september 2004 (endret) ooops! ON TOPIC: Ja det gjør det sikkert, la bare merke til den funksjonen da jeg gikk over noen av funksjonene wxWidgets hadde å tilby. takk! Endret 28. september 2004 av zirener Lenke til kommentar
saboi Skrevet 28. september 2004 Del Skrevet 28. september 2004 hvis du bruker windows og vil ha høyest mulig oppløsning kan du bruke QueryPerformanceCounter og QueryPerformanceFrequency. se på msdn.microsoft.com hvordan du bruker de Lenke til kommentar
<BøNilzen> Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 Nei sitter på red-hat linux, med kdevelop. (dette var kanskje noe jeg burde informert om i første post men... ) Lenke til kommentar
A_N_K Skrevet 29. september 2004 Del Skrevet 29. september 2004 clock_gettime tror jeg gir den høyeste oppløsningen i linux, mulig at du må linke med librt. Lenke til kommentar
Vial Skrevet 29. september 2004 Del Skrevet 29. september 2004 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
saboi Skrevet 29. september 2004 Del Skrevet 29. september 2004 bare for å pirke litt er det ctime og ikke time.h i c++ Lenke til kommentar
<BøNilzen> Skrevet 3. oktober 2004 Forfatter Del Skrevet 3. oktober 2004 i 'time.h' fins det en funksjon kalt clock_t. hmm. Synes den der var litt rar. På små tall bruker den 0 (millisekunder?) og på litt større tall bruker den feks. 10000, 20000 eller andre x*10^5 antall (millisekunder?) Lenke til kommentar
Vial Skrevet 6. oktober 2004 Del Skrevet 6. oktober 2004 (endret) 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 Edit: millisekunder ja Endret 6. oktober 2004 av Vial Lenke til kommentar
<BøNilzen> Skrevet 6. oktober 2004 Forfatter Del Skrevet 6. oktober 2004 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 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
Vial Skrevet 7. oktober 2004 Del Skrevet 7. oktober 2004 i never said it was perfect men du har et poeng ja. Løsningen er selvfølgelig å lage en egen timer som måler mer nøyaktig. Kanskje jeg mixer opp noe i morgen Lenke til kommentar
A_N_K Skrevet 7. oktober 2004 Del Skrevet 7. oktober 2004 Hvis du slår opp clock() (man 3 clock) vil du se at du må dele resultatet med CLOCKS_PER_SEC for å få antall sekunder. Lenke til kommentar
zyp Skrevet 7. oktober 2004 Del Skrevet 7. oktober 2004 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå