我在一本书中读到,在.cpp文件中定义(类的)方法,而不是在类中声明(.h文件)中定义它,将减少内存使用并加快编译时间。
将成员函数定义从类定义移动到单独的.cpp文件,通常会加快编译时间并减少内存使用。
我试图在C++代码中实现它,但是每次执行时间不同,所以我无法清楚地检查它。有人能帮我理解这个概念吗?
发布于 2019-09-24 12:06:03
只要将函数定义编译成单个二进制,函数定义的位置就不会对代码性能产生影响。请注意,即使函数没有在头文件中定义,即使它们是在头文件中定义的,也可能是内联的。
根据项目组织的不同,将定义放入头文件而不是在.cpp文件中可能会极大地改善构建时间或使其变得更糟。对于最快的构建,将定义放入头文件是必须的。
发布于 2019-09-24 11:58:50
正如您所说的,在.cpp中而不是在.h中定义方法可以提高性能和加快编译时间。
注意,这两个属性(性能和加速比)都应用于编译时间。它不会提高运行时的性能。
关于为什么它提高了编译时间的性能,这是因为该方法仅在定义它的.cpp中被解析和编译,而如果它是在.h中定义的,则在包含头的所有.cpp中进行解析和编译,从而降低了总的编译速度1。
1在这篇博文中,我们将对此作进一步的详细解释:http://gameangst.com/?p=224
发布于 2019-09-24 12:21:44
当您将方法定义放入.cpp文件中时,它只编译一次,其他.cpp文件中该方法的每个调用都将链接到该方法的单个编译版本。
如果将方法定义放入头文件中,就好像将其复制粘贴到头文件中的每个.cpp文件中一样,并且必须在每个.cpp文件编译中分别编译,这当然比编译一次要花费更多的时间。
https://stackoverflow.com/questions/58079747
复制相似问题