Avatar billede heungsu Nybegynder
30. december 2008 - 13:12 Der er 9 kommentarer og
1 løsning

køretid for funktion

Hej Eksperter,

Jeg skal have lidt hjælp til at udskrive køretid på en funktion i C++.

noget lignende:

starttid
funktion();
udskriv nu - starttid.

Problemet er at vi får det udskrevet i sekunder som er 0. Kan det ikke udskrives i mikro- eller millisekunder?

På forhånd tak
Avatar billede bertelbrander Novice
30. december 2008 - 13:46 #1
Man bruger ofte:
#include <time.h>
#include <iostream>

int main()
{
  std::cout << "Tryk paa <enter> naar du faar lyst";
  clock_t start = clock();
  std::cin.get();
  clock_t end = clock();
  std::cout << "Det varede " << double(end - start)/CLOCKS_PER_SEC << " sekunder inden du fik lyst" << std::endl;
}
Avatar billede arne_v Ekspert
30. december 2008 - 14:18 #2
time giver væg tid i units af sekunder
clock giver cpu tid i typisk units af mikroseunder
gettimeofday giver væg tid i units af mikrosekunde

væg tid != cpu tid
units != granularity
Avatar billede arne_v Ekspert
30. december 2008 - 14:18 #3
gettimeofday er ikke en del af C standarden, men er ret almindelig
Avatar billede heungsu Nybegynder
30. december 2008 - 15:05 #4
ok tak for hjælpen :) svar?
Avatar billede bertelbrander Novice
30. december 2008 - 15:33 #5
Nej, jeg samler ikke på point.
Avatar billede heungsu Nybegynder
30. december 2008 - 16:03 #6
ok... arne? :)
Avatar billede arne_v Ekspert
30. december 2008 - 20:13 #7
Jeg har lige checket. På windows (undtagen hvis man bruger cygwin) returnerer clock
faktisk wall time ikke CPU time.

Yuck.

Hvordan f..... kan de gøre det.

Teksten er:

The clock function returns the implementation’s best approximation to the processor
time used by the program since the beginning of an implementation-defined era related
only to the program invocation. To determine the time in seconds, the value returned by
the clock function should be divided by the value of the macro CLOCKS_PER_SEC. If
the processor time used is not available or its value cannot be represented, the function
returns the value (clock_t)(-1).

Nå. Uanset hvad. Hvis der kun er den målte process som virkeligt laver noget, så
er CPU tid og væg tid ca. det samme.
Avatar billede arne_v Ekspert
30. december 2008 - 20:14 #8
jeg samler
Avatar billede segmose Nybegynder
31. december 2008 - 10:36 #9
Jeg tror det er et levn fra dos tiden, da jeg for nogen tid siden konverterede et program fra dos til linux oplevede jeg at mine tider ikke passede. Jeg havde brugt clock som virkede som wall tid på dos, da den jo kun køre et program, jeg er så rimelig sikker på at da de konverterede til windows så bibeholdt de det for at alle der have lavet samme fejl ikke skulle blive ramt, en dårlig beslutning.
Avatar billede arne_v Ekspert
31. december 2008 - 18:38 #10
Lyder som en meget plausibel forklaring. Det er sådan tingene sker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester