Small. Fast. Reliable.
Choose any three.

SQLite库的大小

SQLite库使用的代码空间取决于目标平台,编译器和优化设置。这些变量也会影响性能。

下表显示了截至2017年10月8日SQLite的相对大小和性能,这些性能是在x86_64上的Ubuntu 16.04.3上测试的各种编译器和优化设置的。一般观察:

  1. Clang / LLVM编译器与GCC没有竞争力。Clang生成的二进制文件始终比GCC生成的二进制文件大和慢。

  2. 配置文件引导的优化(PGO)对SQLite无效。PGO生成的二进制文件大约大1%,而速度慢0.33%。

  3. GCC-7生成的二进制文件比GCC-5小和快,尽管差别并不大。

  4. 使用GCC和-Os进行编译会导致二进制文件的大小略小于500KB。(更新2018-07-07:由于增加了UPSERT窗口功能等新功能,库的占用空间现在略大于500KB。)

  5. 开发人员需要做出的唯一重要的设计决策是使用-O(针对大小进行优化)还是-O6(针对速度进行优化)。-O6设置可使二进制文件的运行速度提高约2%或3%,但也大66%。这里的性能是通过使用cachegrind计数CPU周期来衡量的。分析中不考虑I高速缓存未命中。如果考虑了I高速缓存未命中,那么使用-O6进行构建可能不会比使用-Os进行构建更快。

  6. 考虑到上述所有因素,SQLite开发人员建议使用带有-Os优化设置的GCC-7来编译SQLite。


细节