实例成员与静态成员与非类方法的成本

时间:2018-08-03 06:06:11

标签: c++

这是一个非常笼统的问题,但我还没有找到针对C ++的明确明确的答案。

我有一类具有许多方法的类,这些类可以同时调用大量对时间要求严格的方法(<5)来实现大量实例,例如对于实时仿真,其他方法对时间要求不严格。 将非关键方法声明为静态成员,或者甚至声明为非类函数(在相关/可能的范围内)会更省时。

现在,动态方法与静态方法或非类方法的内存开销如何?任一种选择都存在大量实例,是否存在内存不足的风险?

如果我错过了一个精确回答此问题的参考文献,请原谅我,或者只是提示我如何进行,谢谢!

1 个答案:

答案 0 :(得分:0)

找不到具体答案的原因是,很难预测优化器的工作方式。

最近,当我试图获得this question的答案时,我比通常在代码中更深入地研究了问题。enter image description here据说完全无害,对性能的影响很小,但可以测量。

如果您阅读了我对代码进行的深入研究的结果,则优化有点像蝶形原理。微小的微小变化就会产生“涟漪效应”,从而产生比您乍看之下要大得多的效果。当然,在那种情况下,只有3%左右,但是在时间紧迫的代码中,这可能很重要。我知道,我去过那里。 ;)

因此@Cheers and hth-Alf是100%正确的。您可以绝对确定的唯一方法是尝试所有可能的组合并对其进行基准测试。