0

我正在做一些性能调整工作。基本上,我在我们的代码库中发现了一个潜在的瓶颈,并为它思考了最佳解决方案。我会尽量让这个问题尽可能简单。基本上,我有一个方法可以处理一组双精度值(std::set)。所以方法签名看起来像:

void MyClass::CalculateStuff(const std::set<double> & mySet);

代码中有几个地方调用了这个方法。这些地方中只有少数需要使用该集合,而其他地方则不关心该集合。我想我可以创建包含此集合的此方法的另一个版本,并修改现有的方法以使用空集合。但是,这会给不关心集合的地方带来一些开销(因为他们必须进行额外的方法调用)。所以我想到的另一个选择是使用指向集合参数的指针,如下所示:

void MyClass::CalculateStuff(const std::set<double> * pMySet);

指针的有效性将决定我们是否要使用集合(即为集合参数传递 NULL 指针意味着我们不执行与集合相关的工作)。从界面的角度来看,这会更快,但显然不干净。我想我可以对代码进行大量评论。

你认为应该怎么做?这可能不是什么大不了的事,但它让我思考你应该走多远才能让你的代码更快(如果性能在应用程序中非常重要)与确保代码仍然干净和可管理。在这种情况下应该在哪里画线?

4

1 回答 1

0

好吧,我做游戏编程。对我来说。我只担心游戏开始滞后然后我配置文件等时潜在的瓶颈。

通过指针传入将更有效,因为指向对象的指针只有 4 个字节。但我确实建议您将其传递为空。您将nullptr其用作当前标准来定义空指针而不是NULLor 0

我猜你正在传递一个集合来计算类的集合。在这种情况下,重载运算符可能是您的最佳选择?

于 2013-04-14T03:49:54.593 回答