如何测量 sqlite3 查询所花费的时间
How can I measure the time taken by a sqlite3 query?
我有一个将数据写入SQLITE3数据库的应用程序。我的应用程序在达到一个点后变得非常慢。我想测量每次转换的sqlite3_step查询具体花费的时间。有什么方法可以做到这一点吗?我已经量化了我的应用程序,我可以看到运行时主要由使用此查询的函数占用。现在我需要每次过渡的时间。
谢谢鲁奇
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;它"无处不在"。有特定于系统的功能,例如类Unix系统上的getrusage()
。
我在SQLITE3上也遇到了同样的问题,但没有方法可以跟踪时间。
我使用以下技巧跟踪了时间......
- 在方法执行之前创建一个计时器变量。(假设开始时间 = 当前时间) ......
- ..........查询 SQLITE...
- 再次完成查询后,请占用当前时间。
- 区分这两个时间以获得执行时间。
希望这能解决您的问题。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 查询SQLite数据库中的日期
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 查询时间/周期是针对所有内核/线程的序列化请求还是并行请求?
- 点燃缓存加载时间的选择查询
- C++ Poco SQL 查询不返回具有'between'和'and'日期时间绑定的结果
- 如何测量 sqlite3 查询所花费的时间
- 减少具有未排序时间范围的表中的查询时间
- C++数据结构的时间范围查询
- 使用 Firedac 进行 MongoDB 的时间范围查询
- 在终止/非活动会话上执行简单查询需要几分钟时间
- 是否可以使用查询性能计数器(Win32,C)获取时间戳