找出用于构建SQLite的编译选项的方法

时间:2009-05-19 07:14:38

标签: iphone cocoa cocoa-touch sqlite

在我的性能测试期间,我发现Apple在iPhone 3.0上提供的SQLite版本明显快于我自编的合并SQLite版本。所以我的问题是,有没有办法找出Apple使用的编译选项?

是否有打印出所有默认设置pragams和sqlite3_config设置的测试应用程序?

3 个答案:

答案 0 :(得分:10)

您可以使用compile_options pragma(或链接文档中提到的相关函数)来查看构建SQLite时使用的编译时选项。但是,这个pragma(以及相关函数)的可用性似乎取决于它是否在编译时启用。 SQLite文档说:

  

通过在编译时指定SQLITE_OMIT_COMPILEOPTION_DIAGS选项,可以省略对sqlite3_compileoption_used()和sqlite3_compileoption_get()的诊断功能的支持。

因此,您的发行版很可能在编译时未启用此功能,这意味着您可能无法查看选项。

答案 1 :(得分:2)

除了尝试所有可能的排列并测试每个排列以查看哪些行为相同(除非Apple已进行自定义修改)之外,没有办法要求libsqlite的确切配置。最好的方法是调用返回sqlite版本号的sqlite3_libversion

答案 2 :(得分:1)

看起来pragma设置中唯一不同的是cache_size,默认为2000,但在iPhone上为500.

在某些系统上,可以通过以下方式读取编译器设置: objdump --full-contents --section .GCC.command.line