sqlite在shell中选择查询比C / C ++更快

时间:2017-09-02 04:09:39

标签: c++ shell sqlite

我有一个简单的数据库/表,大约有1M条记录。没有索引,全部干净。 sqlite3 shell在4.4秒内执行以下查询:

通过排放asc限制30从表顺序中选择*;

windows10 / VS2017 / sqlite 3.20.0中完全相同的语句需要14秒:

        rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
        sqlite3_step(stmt);

我经历了所有的pragma。没运气。知道性能差异可能来自何处?

找到了一些东西:

像往常一样,问题不在我们看来的地方。对于给定的查询,通过编译指示进行的优化是微不足道的。但是,我在调试和发布模式下测试了代码,差别很大:

无优化,调试:13.7秒
整体优化/尺寸,释放:2.5秒!

某处有一个对速度有重大影响的选项。知道哪一个并在调试模式下应用它会很好。

找到它:

我使用合并。应用适当的编译/链接选项是关键。

默认/当前选项:14.4秒
将调试信息格式从/ ZI更改为Zi:9.7秒
将基本运行时检查从/ RTC1更改为默认值:5.4秒
将优化/ Od(禁用)更改为/ O1(大小):3.0秒

这是很多试验,错误和发现。我希望它可以帮助别人!

0 个答案:

没有答案