为了减少工作中相当大的框架的编译时间,我考虑将.h文件中的类方法定义移动到它们关联的.cpp文件中,如果它们非常大或者需要包括编译可以移动到关联的文件. cpp文件.为清楚起见,下面是一个人为的例子(虽然Foo::inc是一个很小的方法)
main.cpp:
#include "Foo.h"
int main(int argc, char** argv) {
Foo foo(argc);
foo.inc();
return foo.m_argc;
}
Run Code Online (Sandbox Code Playgroud)
之前是Foo.h(还不需要Foo.cpp):
class Foo {
public:
int m_argc;
Foo (int argc) : m_argc(argc) {}
void inc() { m_argc++; }
};
Run Code Online (Sandbox Code Playgroud)
Foo.h之后:
class Foo {
public:
int m_argc;
Foo (int argc) : m_argc(argc) {}
void inc();
};
Run Code Online (Sandbox Code Playgroud)
Foo.cpp:
#include "Foo.h"
void Foo::inc() { m_argc++; }
Run Code Online (Sandbox Code Playgroud)
很久以前,一位同事提到可能存在导致运行时性能下降的情况.我在谷歌上寻找这个案子,但似乎无法找到它,这个问题的接受答案是我能找到的最接近的答案,但它没有给出案例,只是提到它可能发生:从标题中移动内联方法文件到.cpp文件
在旁注中,我对方法明确使用的情况不感兴趣,inline我上面链接的答案就是我能找到的最接近我正在寻找的方法
什么情况(如果有的话)可能导致运行时间减慢?
您的原始方法void inc() { m_argc++; }是自动的,inline因此允许编译器使用内联版本替换调用.
一旦将方法移出类定义到模块,此方法就inline不再存在,内联扩展不会发生,标准方法调用就在那里,结果可能会更慢.
| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |