gpt4 book ai didi

clock() 在使用 C 时即使暂停大约 5 秒也会返回 0

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:34 25 4
gpt4 key购买 nike

给出下面的代码

#include<time.h> 
#include <stdio.h>
#include <stdlib.h>

void firstSequence()
{
int columns = 999999;
int rows = 400000;
int **matrix;
int j;
int counter = 0;
matrix = (int **)malloc(columns*sizeof(int*));
for(j=0;j<columns;j++)
{
matrix[j]=(int*)malloc(rows*sizeof(int));
}
for(counter = 1;counter < columns; counter ++)
{
free(matrix[counter]);
}
}

void secondSequence()
{
int columns = 111;
int rows = 600000;
int **matrix;
int j;
matrix = (int **)malloc(columns*sizeof(int*));
for(j=0;j<columns;j++)
{
matrix[j]=(int*)malloc(rows*sizeof(int));
}
}


int main()
{
long t1;
long t2;
long diff;
t1 = clock();
firstSequence();
t2 = clock();

diff = (t2-t1) * 1000.0 / CLOCKS_PER_SEC;
printf("%f",t2);

t1 = clock();
secondSequence();
t2 = clock();
diff = (t2-t1) * 1000.0 / CLOCKS_PER_SEC;
printf("%f",diff);



return(0);
}

我需要能够看到序列一和序列二运行需要多长时间。但是,随着时间的流逝,我两次都得到 0。从网上看,我发现这可能是个问题,但我不知道如何解决这个问题

最佳答案

您显示的时间不正确,因此即使您的函数花费的时间超过 0 毫秒,对 printf() 的调用也会调用未定义的行为。

printf("%f",diff);

%f 用于显示 double 。您可能想使用 %ld

如果您的函数确实需要 0 毫秒来执行,那么计算一次函数调用时间的一种简单方法是多次调用它,只要是可测量的,然后取总耗时的平均值。

关于clock() 在使用 C 时即使暂停大约 5 秒也会返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19014214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com