Avatar billede anarchy Nybegynder
05. september 2002 - 15:41 Der er 10 kommentarer og
1 løsning

Tage tid på et program.

Go'daw folk, hehe...Anyways Jeg gik og undrede mig er der nogle måder at tage tid på hvor lang tid et program er om at f.eks. køre i gennem et loop?
Avatar billede jpk Nybegynder
05. september 2002 - 15:45 #1
DWORD dwStart = timeGetTime();
...
DWORD dwTimeDiff = timeGetTime() - dwStart; // dwTimeDiff indeholder nu tidsforskellen i ms
Avatar billede jpk Nybegynder
05. september 2002 - 15:46 #2
Husk:
#include <Mmsystem.h>
samt at linke med Winmm.lib

Dette virker under Windows (du skriver ikke hvilket operativsystem...)
Avatar billede anarchy Nybegynder
05. september 2002 - 15:48 #3
Ah yah, jeg vil helst ha' det i 'pure vanilla' C++, så det kan compiles på de fleste OS's.
Avatar billede soreno Praktikant
05. september 2002 - 17:32 #4
så kig lidt på clock() i time.h:
http://www-ccs.ucsd.edu/c/time.html
Avatar billede anarchy Nybegynder
05. september 2002 - 17:48 #5
Hmmm Ok så jeg kunne gøre sådan her:

#include <iostream>
#include <time.h>

using namespace std; // Ved godt jeg ikke burdte bruge det globalt, men feh..

int main(){

int TAL = 0;
cout<<"TAL! :";
cin>>TAL;

for(int i = 0; i <= TAL; i++){}

cout<<"Loopet kørte i "<<clock()<<" Seconder.";

return 0;
}
Avatar billede soreno Praktikant
05. september 2002 - 18:06 #6
du bør jo have et reference punkt..
#include <iostream>
#include <time.h>

using namespace std; // Ved godt jeg ikke burdte bruge det globalt, men feh..

int main(){

int TAL = 0;
cout<<"TAL! :";
cin>>TAL;

double ref = clock();

for(int i = 0; i <= TAL; i++){}

double elapsed = clock() - ref;
cout<<"Loopet kørte i "<<elapsed<< " clock ticks" << endl;

return 0;
}
Avatar billede anarchy Nybegynder
05. september 2002 - 18:17 #7
Når jeg kompilerer programmer i Dev-C++ og kører det får jeg:

TAL! :5000
Loopet k°rte i 0 clock ticks
Avatar billede soreno Praktikant
05. september 2002 - 18:22 #8
ja, for der sker jo ikke noget i dit loop - det kører hurtigere end målingen kan måle
Avatar billede soreno Praktikant
05. september 2002 - 18:32 #9
prøv evt. at kigge lidt på dette:
#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

const int size = 20000;
int data[size];

void generateData(int data[])
{
  srand(time(0));
  for(int i=0;i<size;++i)
      data[i] = (rand()%50)+10;
}

void insertionSort(int data[])
{
  for(int i=1;i<size;++i)
  {
      int j;
      int temp = data[i];
      for(j=i;j>0 && temp<data[j-1];--j)
    data[j] = data[j-1];
      data[j] = temp;
  }
}


int main(int argc, char **argv)
{
  double ref = clock();
  generateData(data);
  insertionSort(data);
  double elapsed = clock() - ref;
  cout << "Det tog: " << elapsed << " clock ticks" << endl;

  return 0;
}
Avatar billede soreno Praktikant
05. september 2002 - 18:33 #10
hos mig giver det:
Det tog: 1852 clock ticks
Avatar billede anarchy Nybegynder
05. september 2002 - 18:33 #11
Ah ok, Takker så, her ta' nogle point og del dem med konen eller noget.
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