c ++实现时钟来测量执行时间

时间:2015-03-16 15:30:46

标签: c++ timer

我用c ++编写了一个程序,并试图测量完全执行所需的时间

int main (int argc, char**argv){
    clock_t tStart = clock();
    //doing my program's work here
    printf("Time taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
    return 0;
}

我的问题是它总是打印出0.00s的执行时间。这可能是因为我的程序中使用了多个pthreads(我的程序使用pthread_join来确保所有线程都已完成执行,所以我不认为这应该是一个问题)?

编辑://执行程序工作= ...

for(i = 0;i<4;i++){
    err = pthread_create(&threads[i], NULL, print, NULL); 
    pthread_join(threads[i], NULL);
}

void *print(void *data){
    printf("hello world");
}

2 个答案:

答案 0 :(得分:1)

printf("Time taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);

所有三个算术操作数都是整数,因此你执行整数除法并获得0

/符号的LHS或RHS转换为浮点类型。并运行您的代码更多次!如果它只测量一次运行,那么你的基准测试就没用了(由于你得到0,而不是1或类似300或其他东西,这是非常明显的。

答案 1 :(得分:0)

这实际上取决于//doing my program's work here中的内容。如果它开始其他线程,那么你肯定需要等待或轮询以获得时间。显示代码以获得更多帮助!在我最近的类似情况中,事实证明我的代码实际上在不到0.01秒的时间内运行。

相关问题