以适当的方式为Windows构建sqlite

时间:2011-04-18 13:50:30

标签: sql sqlite gcc compiler-optimization

我的问题是无论我如何构建sqlite - 我的二进制文件比它慢得多 在sqlite下载页面上预编译的一个(大约3-6次取决于 查询)。

我正在使用来自合并来源的sqlite3.h和sqlite3.c:

http://www.sqlite.org/sqlite-amalgamation-3070602.zip

我在编译sqlite时添加了以下标志:

gcc
-s -O4 -I. -fomit-frame-pointer
-DNDEBUG
-DSQLITE_OS_WIN=1
-DSQLITE_HAVE_READLINE=0
-DSQLITE_THREADSAFE=1
-DSQLITE_TEMP_STORE=2
-DSQLITE_ENABLE_RTREE
-DSQLITE_ENABLE_FTS3
-DSQLITE_OMIT_COMPILEOPTION_DIAGS
-DSQLITE_ENABLE_COLUMN_METADATA
-DNO_TCL

我使用MINGW和MSVS 2010构建它。

有没有人知道如何构建sqlite以获得与之相同的二进制文件 下载页面?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

按照SQLite wiki : How to compile上的指南查看Make传递给编译器的参数是什么。我的第一个嫌疑人是-O4,因为GCC理解的最高级别是-O3,即使这通常比-O2-Os更糟糕(因为小尺寸==否CPU缓存未命中,-O3非常糟糕地破坏了二进制文件。

虽然我可以看到方法不同:Build On Windows Without Tcl使用-O2,但是机票#931使用了该死的-O4“Gentoo Ricer模式”。无论哪种方式,在没有指定目标体系结构的情况下,这些优化开关并不值得:尝试-march=core2-march=native进行自动检测,但请记住,此类代码不适用于早期的CPU。 -march=nocona可以处理比奔腾4更新的任何东西,并且仍然为编译器提供了大量有用优化的空间。