我用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");
}
答案 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秒的时间内运行。