首页 > 解决方案 > 实例成员与静态成员与非类方法的成本

问题描述

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

我有一个包含许多方法的类,它可能有大量实例同时实现,同时调用几个方法(<5),这些方法是时间关键的,即用于实时模拟,其他方法不是时间关键的。将非关键方法声明为静态成员,甚至声明为非类函数(尽可能相关/可能)是否会更省时。

现在动态方法与静态方法或非类方法的内存成本如何?在任一选项中是否存在大量实例的内存短缺风险?

如果我错过了准确回答这个问题的参考,请原谅我或只是给我一个提示如何继续,提前谢谢!

标签: c++

解决方案


您找不到具体答案的原因是试图预测您的优化器将如何做可能很困难。

最近,当我试图回答这个问题时,我对代码的挖掘比我通常所做的要深入得多,在这个问题上,一个所谓的完全无害的更改对性能的影响很小但可以衡量。

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

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


推荐阅读