Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 程序执行计时器始终显示0.000秒_Testing_Time - Fatal编程技术网

Testing 程序执行计时器始终显示0.000秒

Testing 程序执行计时器始终显示0.000秒,testing,time,Testing,Time,所以我有这个计数排序代码,我需要测试它对特定数量的数字的工作速度。101000500010000等等。现在我遇到了一个问题,我在C中找到了一些执行时间代码,它没有显示错误,但每当我启动它时,我总是得到相同的结果。0.000000秒或毫秒甚至纳秒。 这是我的代码: void CountingSort(int array[], int k, int n,int min) { int i, j; int B[50000], C[100000]; for (i = 0; i <= k+mi

所以我有这个计数排序代码,我需要测试它对特定数量的数字的工作速度。101000500010000等等。现在我遇到了一个问题,我在C中找到了一些执行时间代码,它没有显示错误,但每当我启动它时,我总是得到相同的结果。0.000000秒或毫秒甚至纳秒。 这是我的代码:

void CountingSort(int array[], int k, int n,int min)
{

   int i, j;
int B[50000], C[100000];
for (i = 0; i <= k+min; i++){
 C[i] = 0;
}
for (j = 0; j < n; j++){
 C[array[j]+min]++;
}
for (i = 1; i <= k+min; i++){
 C[i] += C[i-1];
}
for (j = 0; j < n; j++) {
  B[--C[array[j]+min]] = array[j];
}
printf("Counting sort: \n");
for (i = 0; i < n; i++) {
   printf("%d ", B[i]);
}
printf("\n");
}

void minimum(int array[],int *min,int n){
int i;
for (i = 0; i < n; i++)
    {
    if (array[i] < *min) {
        *min= array[i];
                      }
    }
} 

void max(int array[],int *k,int n){
int i;
for (i = 0; i < n; i++)
    {
        if (array[i] > *k) {
        *k = array[i];
                      }
    }
}

int main(int brArg,char *arg[])
{


int array[1000000];
int i=0,j,k=0,n,x,z,min=0,prsk=0;

 printf("Ten random numbers in [1,100]\n");

  for (i = 0; i < 5000; i++) {
n = rand() % 200 + 1;
printf("I[%d]=%d\n",i, n);
array[i]=n;
printf("arr %d \n",array[i]);
  }



n=i;
max(array,&k,n);
minimum(array,&min,n);
min=abs(min);

clock_t t;
double time_spent;

t = clock();

CountingSort(array,k,n,min);

t = clock() - t;
double time_taken = ((double)t)/(CLOCKS_PER_SEC/1000000000.0); // in seconds

printf("counting took %f miliseconds to execute \n", time_taken); 

return 0;

} 

现在,您不必查看代码的工作方式或其他任何工作方式,我只需要在最后进行时间测试时得到帮助,我做错了什么,所以时间测试不起作用?

为什么不将开始时间设置为datetime,将结束时间设置为datetime。在你的代码结束时,有一个时间跨度,可以得到两者之间的差异…我也尝试过这种方法,但它再次显示0.00000秒。我在我的计算机上运行你的代码,它返回:计数花了1003000.000000毫秒来执行我的上帝。。。如果这是我的linux版本的问题,我会哭xD。。。谢谢你,伙计!谢谢你的帮助!我不这么认为!我怀疑这应该是一些更微妙的错误