我有一个 MS Window 可执行文件,用非托管纯“C”编写,它在嵌入式数据库引擎 (SQLite) 周围放置一个 GUI 包装器。SQLite 功能由合并包 3.7.14.1 提供,特别是 2 个文件 sqlite3.h 和 sqlite3.c 我对“开箱即用”文件所做的唯一更改是添加以下行:#define SQLITE_ENABLE_COLUMN_METADATA 1
它全部使用 Visual Studio 2008 在 Win 7(64 位)系统上编译,但我将其编译为 32 位应用程序。
我已经将文件 sqlite3.h 和 sqlite3.c 换成了合并包 3.15.2 中的文件,唯一的更改是添加以下行:#define SQLITE_ENABLE_COLUMN_METADATA 1
我没有更改我的项目配置。我只交换2个文件!
我有一个复杂的脚本,它将一个大约 600 MB 的大型 DB 加载到内存中,然后执行大量 SELECTS,并将结果传输到 Excel(使用我的 GUI 包装器中的功能)。
我的问题。使用合并包3.7.14.1的版本性能比合并包3.15.2快一百倍以上。我正在使用完全相同的“脚本”。
我尝试了合并包 3.16 并没有更好。我可以看到性能损失在 SQL 引擎中(通过在进入和离开 SQL 机器时显示弹出窗口。就我的 GUI 包装器、Visual Studio 配置、项目配置而言,一切都是一样的。我假设性能问题在于合并包中的一些编译器开关。
有谁知道我应该从哪里开始看?