给出下面的代码

#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);
}

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

最佳答案

您错误地显示了时间,因此即使您的函数占用的时间超过0毫秒,对printf()的调用也会调用未定义的行为。

printf("%f",diff);

%f用于显示双倍。您可能想使用%ld
如果您的函数确实需要0毫秒才能执行,那么计算一次调用函数所需时间的一个简单方法是多次调用该函数,使其可测量,然后取所用总时间的平均值。

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

10-12 16:00