user466534
user466534

Reputation:

Running time of program

The program listed below outputs 0 on the screen. Why? Does it mean that my computer is fast or something is wrong in the code?

#include <iostream>
#include <cstdio>
#include <ctime>
using namespace std;

int main(){
    int j=0;
    clock_t start=clock();
     for (int i=0;i<22220;i++){
         i++;
         j++;
         j+=i;
        // sleep(10);
     }

     clock_t final=clock()-start;
     cout<<final/ (double) CLOCKS_PER_SEC<<endl;

     return 0;
}

Upvotes: 2

Views: 1023

Answers (3)

PTT
PTT

Reputation: 556

#include <windows.h>

SYSTEMTIME startTime;
GetSystemTime(&startTime);
WORD startmillis = (startTime.wSecond * 1000) + startTime.wMilliseconds;

// Do some stuff

SYSTEMTIME endTime;
GetSystemTime(&endTime);
WORD endmillis = (endTime.wSecond * 1000) + endTime.wMilliseconds;

WORD millis = startmillis - endmillis ;

Upvotes: 0

Andrei
Andrei

Reputation: 5005

Not sure about this, you might want to examine the outputted assembly code, but since neither i nor j are actually used in the rest of the program, the compiler might not generate any code for those instructions.

Upvotes: 3

Khaled Alshaya
Khaled Alshaya

Reputation: 96849

Note that clock() doesn't return wall clock time, instead it has to do with the processing time in which sleep does nothing practically(it yields control to the operating system).

Try to remove sleep, and increase the loop count.

Upvotes: 2

Related Questions