在C中将单个文件拆分为多个文件 - 性能方面

Me *_*agi 6 c performance

我在这个主题上找到了一篇类似的文章,但它讨论的是设计方面而不是性能,所以我发布这篇文章是为了了解破坏一个大的 c 文件如何影响编译和执行时间。

我有一个很大的实用程序文件(我们都知道它们增长得很快)。我试图了解将文件拆分为基于模块的函数文件(cookies.c、memcacheutils.c、stringutils.c、search.c、sort.c、arrayutils.c 等)是否会增加编译和执行时间的损失。

我的常识是,这会增加一些惩罚,因为代码现在必须在远取位置而不是在同一文件中查找指针。

我可能是完全错误的,也可能是部分正确的。求各位高手指导。我当前的 utils 文件大约有 150k,有 80 多个函数。

感谢您阅读这篇文章。

PP.*_*PP. 3

当您拥有具有不同段的 16 位 PC 时,这曾经很重要。远(更糟糕的是,“巨大”)指针会带来性能成本,因为您必须开始使用段寄存器。

现在使用 32 位寻址应该是没有成本的。最终,如果您担心性能,那么您开始考虑汇编中的“跳转表”,它要求目标地址相对于当前指令的距离很短。

那么,在 C 中,您确实应该致力于将代码放入不同的模块中(阅读有关软件“内聚”和“耦合”理论问题的内容)。执行时间应该没有差异。就编译时间而言,它“取决于” - 特别是如果您重复包含文件。在大型项目中,拥有多个文件可以节省大量时间,因为您可以仅重新编译已更改的代码单元。在小项目中,编译时间很小,相对来说不用担心效率。

  • 单独的编译单元和内存模型是完全正交的问题。 (2认同)