c++timeclocktime.h

Measuring time for my array of random numbers to print is always showing 0 seconds


Just wondering why my stopwatch is always showing 0 seconds or 0 milliseconds no matter the amount of random numbers in my array. Here's my code:

#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;

double clock_start()
{
    clock_t start = clock();
    return start;
}

void random_number()
{
    int array[10000];
    srand(6);
    cout << "10k Random numbers: ";
    for (int i = 0; i < 10000; i++)
    {
        array[i] = rand() % 99 + 1;
        cout << array[i] << "\n";
    }
}

int main()
{
    setlocale(LC_ALL, "");
    //-------------------------//

    random_number();
    clock_t elapsed = (clock() - clock_start()) / (CLOCKS_PER_SEC / 1000);
    cout << "Stopwatch: " << elapsed << "ms" << " or " << elapsed * 1000 << "s" << endl;

    //-------------------------//
    system("pause > nul");
    return 0;
}

Solution

  • (clock() - clock_start()) will be evaluated in the blink of an eye.

    All clock_start() does is return clock(). (In fact, a good optimising compiler will replace clock_start() with clock() !)

    The difference will almost certainly be zero. Did you want something like

    clock_t start = clock();
    random_number();
    clock_t elapsed = (clock() - start) / (CLOCKS_PER_SEC / 1000);
    

    instead?