小. 快速. 可靠.
选择任意三个.

Size Of The SQLite Library

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.


Details

by  ICOPY.SITE