Avatar billede emileej Nybegynder
01. januar 2002 - 15:19 Der er 2 kommentarer og
2 løsninger

Måle tidsforskel samt udføre pause funktion

Jeg skal bruge to ting:
1) En måde at måle forskellen i milisekundter fra eet punkt i koden til et andet.
2) En pause funtion, der stopper eksekveringen i x antal milisekundter.

Anyone?

E-)mil
Avatar billede mbulow Nybegynder
01. januar 2002 - 17:40 #1
Hehe :) Så mødes vi igen

1) Nu håber jeg virkelig du programmerer i Windows, for der er vist ikke en del af ANSI-C at kunne aflæse tiden i millisekunder, men i windows kan du bruge multimedie-timeren:
Du skal bruge tre funktioner:

MMRESULT timeBeginPeriod(UINT uPeriod);
MMRESULT timeEndPeriod(UINT uPeriod);
DWORD timeGetTime(void);



Du gør følgende:

//Inkluderer følgende header
#include <mmsystem.h>

//Inkluderer library\'et \"winmm.lib\" til projektet

//Forskellige versioner af Windows har forskellige default-indstillinger for hvor præcis timeren er:
//Lige fra 1ms til 55ms (læste jeg det vist nok til)
//Sæt præcisionen til 1 millisekund
timeBeginPeriod(1);

//Så aflæser du bare tiden de gange du skal gøre det med:
timeGetTime();

//Og når du ellers er færdig, stiller du timer præcisionen tilbage til den gamle værdi
//Parameteren til timeEndPeriod er, den præcision som du satte timeren til med timeBeginPeriod
timeEndPeriod(1);

PS!!! Jeg har ingen anelse om det virker som ønsket, for jeg har aldrig prøvet den, men det er da et forsøg værd :) (Og jeg har tit hørt folk snakke om multimedietimeren, som mulig løsning, så det må vel næsten virke)



2) Pause-funktionen: Sleep(<antal millisekunder>)
Avatar billede soepro Nybegynder
07. januar 2002 - 14:19 #2
1)
Du kan bruge functionen gettime() fra <time> til at måle tiden mellem to stykker kode - du skal selvfølgelig selv finde forskellen:

#include <time>
:
{
struct time startTime, endTime;
itn    difftime;

gettime(&startTime);

// Din kode

gettime(&endTime);

// Anvendt tid i 1/100 sekunder.
diffTime = (endTime.tt_hour - startTime.tt_hour) * 360000
          + (endTime.tt_min  - startTime.tt_min) * 6000
          + (endTime.tt_sec  - startTime.tt_sec) * 100
          + (endTime.tt_hund - startTime.tt_hund);
printf(\"Der blev anvendt %d ms.\", diffTime * 10);
}

Præcisionen kan vist ikke komme over 1/100 s.

2)
Under DOS tillige delay(int ms);
Avatar billede krismort Nybegynder
22. marts 2002 - 18:54 #3
Du kan osse bruge gettickcount();
Avatar billede emileej Nybegynder
28. august 2002 - 23:15 #4
Doh!
Jeg beder ydmygst om forladelse! Plejer ellers ikke at glemme at acceptere :(

Tak til jer begge.

E-)mil
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