我正在做一些性能调整工作。基本上,我在我们的代码库中发现了一个潜在的瓶颈,并为它思考了最佳解决方案。我会尽量让这个问题尽可能简单。基本上,我有一个方法可以处理一组双精度值(std::set)。所以方法签名看起来像:
void MyClass::CalculateStuff(const std::set<double> & mySet);
代码中有几个地方调用了这个方法。这些地方中只有少数需要使用该集合,而其他地方则不关心该集合。我想我可以创建包含此集合的此方法的另一个版本,并修改现有的方法以使用空集合。但是,这会给不关心集合的地方带来一些开销(因为他们必须进行额外的方法调用)。所以我想到的另一个选择是使用指向集合参数的指针,如下所示:
void MyClass::CalculateStuff(const std::set<double> * pMySet);
指针的有效性将决定我们是否要使用集合(即为集合参数传递 NULL 指针意味着我们不执行与集合相关的工作)。从界面的角度来看,这会更快,但显然不干净。我想我可以对代码进行大量评论。
你认为应该怎么做?这可能不是什么大不了的事,但它让我思考你应该走多远才能让你的代码更快(如果性能在应用程序中非常重要)与确保代码仍然干净和可管理。在这种情况下应该在哪里画线?