使用ctime获取2个操作之间的间隔?

时间:2011-04-30 20:59:11

标签: c ctime

我有兴趣使用ctime在不同的点上显示C中程序的执行时间。 我尝试过类似的东西,但一定不对......

int main() {

    time_t tm1, tm2;
    tm1 = time(NULL);
    sleep(2);
    tm2 = ctime(tm1);

    printf("%d\n", tm2-tm1);
    return 0;
}

您有任何建议或适当的例子吗? 提前致谢

2 个答案:

答案 0 :(得分:5)

ctime()返回传递给它的时间的字符串表示。

如果您想要一个简单的经过时间,只需:

    time_t t1, t2;
    t1 = time(0);
    sleep(2);
    t2 = time(0);

    printf("Elapsed: %d\n", t2 - t1);

请参阅man ctimeman 2 time

答案 1 :(得分:2)

您可以使用time函数获取当前时间,使用difftime函数计算两次之间的差异(以秒为单位)(省略错误处理):

time_t t0, t1;
t0 = time(NULL);
foo();
t1 = time(NULL);
printf("foo() took %f seconds.\n", difftime(t1, t0));

但是,time_t用于测量日历时间。 time函数通常具有一秒的间隔。如果这太粗糙,您可以尝试使用clock_tclock函数(再次省略错误处理):

clock_t t0, t1;
t0 = clock();
foo();
t1 = clock();
printf("foo() took %f seconds.\n", (double)((t1 - t0) / CLOCKS_PER_SEC));