合并sqlite

时间:2011-09-14 10:14:40

标签: c sqlite amalgamation

我最近在阅读sqlite3的源代码。在合并版本中,只有四个文件。在official website,他们说:

  

“合并也使它运行得更快”

     

“当我们使用合并来编译SQLite而不是单个源文件时,我们已经测量了5到10%的性能提升。”

我不明白他们是如何做到的以及为什么。有没有人有任何想法?我们有可用的工具吗?

1 个答案:

答案 0 :(得分:4)

如果您解析所有.c文件,提取所有#include,然后构建一个首先列出所有包含的大文件,然后列出这些.c文件的所有其他内容,您可以得到类似的结果。

通过这种方式,您可以在单个转换单元中使用所有代码,该转换单元允许编译器一次查看所有代码并执行更好的优化。这与大多数C编译器相关,但最新的编译器具有所谓的link-time code generation,它允许编译器一次查看多个转换单元的代码(在链接时)并生成更好的代码,即使没有合并技巧。