每次下载SQLite时,我都会发现它们提供了几个不同版本的源代码,这是我从未见过任何其他项目的事情。而且更多的是它们提供了源的合并,将所有文件合并为3个文件。这是什么原因?这只是编译速度吗?还是有一些非常好的理由呢?其他项目是否使用源代码的合并?
答案 0 :(得分:10)
直接在他们的page about amalgamation
上说明除了使SQLite更容易合并到其他项目之外,合并还使其运行得更快。许多编译器能够在代码包含在单个转换单元中时对代码进行额外的优化,例如它在合并中。当我们使用合并来编译SQLite而不是单个源文件时,我们已经测量了5到10%的性能改进。这样做的缺点是额外的优化通常采用函数内联的形式,这往往会使得到的二进制图像的大小变大。
我自己也看到了将其纳入其他项目的最大好处。它简单地使编译更容易。没有构建脚本混乱以及拥有大量源文件后的其他内容。
答案 1 :(得分:4)
这样做可以简化现有项目。在项目中添加一个.h和一个.c,你就拥有了完整的SQLite引擎。
我很感激。这是我不得不担心的一件事。
答案 2 :(得分:0)
当我使用dev c ++编译器在windows下将合并文件转换为单个文件时,我遇到了很多问题。因为我想让sqlite在RTOS中工作 名为DJYOS,从单个文件更改代码比从合并文件更改代码更容易。