часы — Вычислить время выполнения функции всегда = 0?

Я использую clock () в библиотеке, чтобы вычислить время выполнения функции, которая является функцией BubbleSort (..) в моем коде ниже. Но проблема в том, что время выполнения возврата всегда = 0 (и тоже не показывает единицы измерения).
Это мой код:

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

void BubbleSort(int arr[], int n)
{
for (int i = 1; i<n; i++)
for (int j = n-1; j >=i; j-- )
if (arr[j] < arr[j-1])
{
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
return;
}

int main()
{
int arr[] = {4,1,7,2,6, 17, 3, 2, 8,1};
int len = sizeof(arr)/sizeof(int);
cout << "Before Bubble Sort: \n";
for (int i=0;i<len;i++)
{
cout << arr[i] << " ";
}
clock_t start_s=clock(); // begin
BubbleSort(arr,len);
clock_t stop_s=clock();  // end
cout << "\nAfter Bubble Sort: \n";
for (int i=0;i<len;i++)
{
cout << arr[i] << " ";
}
// calculate then print out execution time - currently always returns 0 and I don't know why
cout << "\nExecution time: "<< (double)(stop_s - start_s)/CLOCKS_PER_SEC << endl;
//system("pause");
return 0;
}

Я еще не знал, как решить эту проблему .. Надеюсь, вы, ребята, сможете мне помочь с этим. Любые комментарии будут очень благодарны. Большое спасибо заранее!

1

Решение

Поскольку у вас есть только очень маленький массив, время выполнения, вероятно, намного короче, чем разрешение clock (), поэтому вы должны либо повторно вызывать алгоритм сортировки, либо использовать другой источник времени.

3

Другие решения

Я изменил ваш код как таковой, и оба начала и конца и остановки имеют значение 0. (Ubuntu 13.10)

    std::cout<<"start: "<<start_s<<std::endl;
BubbleSort(arr,len);
clock_t stop_s=clock();  // end
std::cout<<"stop: "<<stop_s<<std::endl;

вы, вероятно, хотите что-то более похожее на gettimeofday ()

этот http://www.daniweb.com/software-development/cpp/threads/120862/clock-always-returns-0 интересная дискуссия о том же. постер заключил, что часы () (на его машине) имеют разрешение около 1/100 секунды. и ваш код, вероятно (почти наверняка) работает быстрее, чем это

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector