我的问题是无论我如何构建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以获得与之相同的二进制文件 下载页面?
任何帮助都将不胜感激。
答案 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更新的任何东西,并且仍然为编译器提供了大量有用优化的空间。