在 C++ 中,定义不使用的附加方法或函数是否会导致更大的内存占用或更慢的执行速度?
基本上,我在一个类中有几种实用程序调试方法,这些方法对于该类的正常使用都不是必需的。如果从未使用过这些定义,是否保留这些定义会在内存占用或速度方面产生影响吗?例如:
class myClass
{
public:
//Something the user of this class would use
int doSomething() {...}
//Something used solely to make sure I wrote the class properly
bool isClassValid() {...}
};
...
myClass classInstance();
myClass.doSomething();
请注意,大多数操作系统并不总是将所有代码保留在内存中。由于代码是常量数据,操作系统始终可以按需从文件加载它,就像从交换区加载动态数据一样。但这并不意味着从未加载未使用的代码,因为操作系统不是通过单独的方法而是通过页面加载它。换句话说,除非您对操作系统和代码段的结构有非常深入的了解,否则很难预测代码段的哪些部分实际上最终位于内存中。唯一可以肯定的是,您的代码完全有可能消耗比其实际大小更少的物理内存。
至于执行速度,我认为答案是否定的。它可能会提高应用程序加载速度,但是当代码执行时,没有人关心它有多大,它对速度绝对没有影响。也就是说,除非您接近内存限制并且操作系统开始大量交换并且一切都变得非常慢。
正如其他人已经提到的,编译器可能会优化您的代码。但您也可以通过使用 #ifdefs 作为调试方法来自己完成此操作,并且通常建议这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)