【问题标题】:Can't measure time cost using libpq无法使用 libpq 测量时间成本
【发布时间】:2014-12-02 19:16:47
【问题描述】:

我想衡量一个查询花费了多少时间,所以我有下面的代码:

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.05 毫秒。但是在终端中,如果我使用解释分析它会显示 400 毫秒。

为什么我不能使用上面的代码来衡量成本?我该怎么办?谢谢,

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    timer_start()timer_end() 函数不是 C 标准库的一部分,尚不清楚第一个函数的作用。 struct timespec 保存经过的时间,因此让 timer_start() 返回该类型是可疑的。从什么其他时间点开始计算?

    我建议使用基于gettimeofday()的一段代码,如以下答案所示:

    Calculating elapsed time in a C program in milliseconds

    PQexec() 是一个阻塞调用,因此测量时间的工作原理与上述技术用作演示的一些长时间 CPU 计算相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多