我想测量查询花费的时间,所以我的代码如下:
struct timespec vartime = timer_start();
res=PQexec(conn, "...");
long time_elapsed_nanos = timer_end(vartime);
printf("Time taken (ns), %ld\n",time_elapsed_nanos);
然而,输出非常小,比如0.05ms。但在终端,如果我使用说明分析它显示400毫秒。
为什么我无法使用上面的代码来衡量成本?我该怎么办?谢谢,
答案 0 :(得分:0)
timer_start()
和timer_end()
函数不属于C标准库,并且不清楚第一个函数的作用。 struct timespec
包含已用时间,因此timer_start()
返回该类型时会产生怀疑。由于它还在计算其他什么时间点?
我建议使用基于gettimeofday()
的一段代码,如下一个答案所示:
Calculating elapsed time in a C program in milliseconds
PQexec()
是一个阻塞调用,因此测量时间将与上述技术用作演示的长CPU计算相同。