以适当的方式为Windows构建sqlite

use*_*071 6 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
Run Code Online (Sandbox Code Playgroud)

我使用MINGW和MSVS 2010构建了它.

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

任何帮助,将不胜感激.

sko*_*ima 2

请遵循 SQLite wiki 上的指南:如何编译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将适用于比 Pentium 4 更新的任何操作系统,并且仍然为编译器提供了很大的空间进行有用的优化。