如何衡量sqlite3查询所用的时间?

时间:2015-04-17 07:42:13

标签: c++ sqlite

我有一个将数据写入SQLITE3数据库的应用程序。达到某一点后,我的应用程序变得非常缓慢。我想测量每个转换的sqlite3_step查询专门采用的时间。有没有办法这样做?我已经量化了我的应用程序,我可以看到运行时间主要取决于使用此查询的函数。现在我需要每次过渡的时间。

由于 鲁奇

2 个答案:

答案 0 :(得分:3)

CLOCKS_PER_SEC是一个在<time.h>中声明的常量。要获取C应用程序中任务使用的CPU时间,请使用:

clock_t begin, end;
double time_spent;

begin = clock();
/* here, do your time-consuming sqlite query*/
end = clock();
time_spent = (double)(end - begin) / CLOCKS_PER_SEC;

请注意,这会将时间作为浮点类型返回。这可能比一秒钟更精确(例如,您测量4.52秒)。精度取决于架构;在现代系统上,您可以轻松获得10毫秒或更低的速度,但在较旧的Windows机器上(从Win98时代开始)它接近60毫秒。

clock()是标准C;它无处不在&#34;无处不在&#34;。系统特定的功能,例如类Unix系统上的getrusage()

答案 1 :(得分:0)

我也遇到了与SQLITE3相同的问题,但没有可用于跟踪时间的方法。

我使用以下技巧跟踪时间..........

  • 在方法执行之前创建一个timer变量。 (比如说startTime = currentTime)
  • ................查询SQLITE ...............
  • 再次完成查询后,请使用当前时间。
  • 区分两次以获得执行时间。

希望这能解决您的问题。