Domanda

I have an array of booleans each representing a number. I am printing each one that is true with a for loop: for(unsigned long long l = 0; l<numt; l++) if(primes[l]) cout << l << endl; numt is the size of the array and is equal to over 1000000. The console window takes 30 seconds to print out all the value, but a timer I put in my program says 37ms. How do I wait for all the values to finish printing on the screen in my program so I can include that in my time.

È stato utile?

Soluzione

Try this:

#include <windows.h>
...

int main() {
    //init code

    double startTime = GetTickCount();

    //your loop

    double timeNeededinSec = (GetTickCount() - startTime) / 1000.0; 
}

Altri suggerimenti

Just in defense of ctime, cause it gives same result as with GetTickCount:

#include <ctime>    

int main()
{
   ...
   clock_t start = clock();
   ...
   clock_t end = clock();

   double timeNeededinSec = static_cast<double>(end - start) / CLOCKS_PER_SEC;
   ...
}

Update:

And the one with time() but in this case we can lost some precision( ~1 sec) because result in seconds.

#include <ctime>    

int main()
{
   time_t start;
   time_t end;
   ...

   time(&start);
   ...
   time(&end);

   int timeNeededinSec = static_cast<int>(end-start);
}

Combining both of them in simple example will show you the difference in result. In my tests I saw difference only in value after dot.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top