C ++ - 传递NULL与分配空std :: set以传递给方法的可行性和性能

时间:2013-04-14 03:39:32

标签: c++ performance

我正在做一些性能调优工作。基本上,我发现我们的代码库存在潜在的瓶颈,并考虑到它的最佳解决方案。我会尽量让这个问题尽可能简单。基本上,我有一个方法可以使用一组double值(std :: set)。所以方法签名看起来像:

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

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

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

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

您认为应该怎么做?这可能不是什么大不了的事,但它让我想到你应该在多大程度上使你的代码更快(如果性能在应用程序中非常重要),而不是确保代码仍然干净和易于管理。在这种情况下,应该在哪里划线?

1 个答案:

答案 0 :(得分:0)

我做游戏编程。而对我来说。我只担心当比赛开始滞后然后我的个人资料等潜在的瓶颈。

通过指针传入将更多的内存效率,因为指向对象的指针只有4字节。但我确实建议你把它传递给null。您使用nullptr作为当前标准来定义空指针而不是NULL0

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