Как выполнить время выполнения программы, написанной на C ++? - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть код, который генерирует случайные числа от 1 до 100 и сортирует их, используя сортировку слиянием, которая у меня уже есть в отдельной функции. Все работает, но когда я реализую часы (); чтобы попытаться получить время выполнения, я всегда получаю ноль. Я даже пробовал с большими числами, такими как 10000, но, тем не менее, прошедшее время всегда дает мне ноль. вот мой код

int main() {
clock_t startTime;
clock_t endTime;
clock_t timePassed;

int array[100];
srand(time(NULL));
int n = sizeof(array) / sizeof(array[0]);
startTime = clock();
    for (int j = 0; j < 100; j++)
    {
        array[j] = rand() % 100+1;
        std::cout << array[j] << " ";
    }
    std::cout << "\n";
    MergeSort(array, n);

    std::cout << "After Merge Sort :" << std::endl;
    PrintArray(array, n);

    endTime = clock();
    timePassed = ((endTime - startTime) / CLOCKS_PER_SEC);
    std::cout << "\n" << timePassed;
}
return 0;
}

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Если вы разрабатываете в системе Unix и хотите измерить время выполнения из приложения, вы также можете использовать команду time, например:

время моего приложения

см время (Unix) - Википедия

0 голосов
/ 09 сентября 2018

использование

double timePassed = (endTime - startTime) / static_cast<double>(CLOCKS_PER_SEC);

План B для более высокой точности:

#include <iostream>
#include <chrono>

// ...

auto start_time{ std::chrono::high_resolution_clock::now() };

// ... code you want to time

auto end_time{ std::chrono::high_resolution_clock::now() };

std::cout << std::chrono::duration_cast<std::chrono::seconds>(end_time - start_time).count() << ":";
std::cout << std::chrono::duration_cast<std::chrono::microseconds>(end_time - start_time).count() << ":";

// ...
...