2

主要是头文件的文件结构(90% 的代码只有头文件)会减慢编译之外的任何东西吗?

有些人认为,在速度优化的情况下,它可能会导致大多数代码的内联,因此处理器会计算出关于指令调用或类似情况的错误统计信息。是否有任何地方表明它或类似的事情会发生并因此减慢应用程序速度?

4

3 回答 3

4
  1. 这可能是C++ 中内联函数的好处的副本?
  2. 实际性能影响取决于许多因素。在您真正遇到性能问题之前,我不会关心它,在这种情况下,我确信通过优化其他事情可以获得更大的收益。
  3. 不要把你所有的代码都放在头文件中——如果你继续这种趋势,你以后会讨厌自己,因为你大部分时间都在等待你的编译器。如果您正在寻找类似的优化,LTO 是一种更好的方法,并且对编译时间的影响较小。
于 2013-07-15T21:24:47.540 回答
3

链接是一个问题。

如果您的库以标头为主,则可能需要先写入然后读取较大的中间目标文件。然后,链接器将有更多符号要分析和重复数据删除,并且一些符号将保留为合法重复。这会增加您的 I/O,使您的二进制文件变大,并在链接器上投入更多的工作。

标头优势的一个好处是编译的源往往更少,因此要链接的图像/对象也更少。因此,仅标头在这方面也有可能更快(如果使用正确)。

如果您的库将对许多翻译可见,那么大小和对链接的影响也应该是一个重要的考虑因素。

于 2013-07-15T22:25:36.947 回答
0

不是性能,而是潜在的错误问题:

来自使用指南:在类定义主体中声明的 C++ 类成员函数总是被内联。如果类成员函数具有静态成员,这将导致每个内联函数实例都有自己的静态成员。这会导致错误。

于 2013-07-16T13:15:04.930 回答