首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在.cpp文件中定义方法而不是在c++中的.h文件中定义方法时,如何提高代码的性能?

在.cpp文件中定义方法而不是在c++中的.h文件中定义方法时,如何提高代码的性能?
EN

Stack Overflow用户
提问于 2019-09-24 11:53:51
回答 5查看 614关注 0票数 1

我在一本书中读到,在.cpp文件中定义(类的)方法,而不是在类中声明(.h文件)中定义它,将减少内存使用并加快编译时间。

将成员函数定义从类定义移动到单独的.cpp文件,通常会加快编译时间并减少内存使用。

我试图在C++代码中实现它,但是每次执行时间不同,所以我无法清楚地检查它。有人能帮我理解这个概念吗?

EN

回答 5

Stack Overflow用户

发布于 2019-09-24 12:06:03

只要将函数定义编译成单个二进制,函数定义的位置就不会对代码性能产生影响。请注意,即使函数没有在头文件中定义,即使它们是在头文件中定义的,也可能是内联的。

根据项目组织的不同,将定义放入头文件而不是在.cpp文件中可能会极大地改善构建时间或使其变得更糟。对于最快的构建,将定义放入头文件是必须的。

票数 2
EN

Stack Overflow用户

发布于 2019-09-24 11:58:50

正如您所说的,在.cpp中而不是在.h中定义方法可以提高性能和加快编译时间。

注意,这两个属性(性能和加速比)都应用于编译时间。它不会提高运行时的性能。

关于为什么它提高了编译时间的性能,这是因为该方法仅在定义它的.cpp中被解析和编译,而如果它是在.h中定义的,则在包含头的所有.cpp中进行解析和编译,从而降低了总的编译速度1。

1在这篇博文中,我们将对此作进一步的详细解释:http://gameangst.com/?p=224

票数 1
EN

Stack Overflow用户

发布于 2019-09-24 12:21:44

当您将方法定义放入.cpp文件中时,它只编译一次,其他.cpp文件中该方法的每个调用都将链接到该方法的单个编译版本。

如果将方法定义放入头文件中,就好像将其复制粘贴到头文件中的每个.cpp文件中一样,并且必须在每个.cpp文件编译中分别编译,这当然比编译一次要花费更多的时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58079747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档