C++如何使函数执行得更快?
我有这个功能,但它们的运行速度不够快。你知道如何写得更有效吗C++如何使函数执行得更快?,c++,function,C++,Function,我有这个功能,但它们的运行速度不够快。你知道如何写得更有效吗 void IntervalSet::add(const SimpleInterval & interval) { if (interval.isEmpty()) return; m_intervals.push_back(interval); tidy(); assert(isConsistent()); } void IntervalSet::add(const Inte
void IntervalSet::add(const SimpleInterval & interval)
{
if (interval.isEmpty())
return;
m_intervals.push_back(interval);
tidy();
assert(isConsistent());
}
void IntervalSet::add(const IntervalSet & intervalSet)
{
for(auto &interval : intervalSet.m_intervals)
add(interval);
assert(isConsistent());
}
根据容器的不同,后推可能会很重。如果您在向量中使用它,可以尝试预先保留大小(如果您知道),或者保留较大的块以减轻分配开销 更新: 老实说,这个问题太模糊了。tidy&isConsistent是黑匣子,不知道他们做什么,如何做,以及是否能做得更好。因此,在函数中评论代码的效率可能是一种误导 将列表用作容器可能不是最好的方法,除非需要在容器中间快速插入和删除。Vector可能是一个更好的选择,并且应该以一种将分配减少到最小的方式使用。重新分配将需要容器的整个内容的副本,因此它越大,向后推_的速度就越慢,如果可能的话,首选reserve
此外,没有提供有关此函数使用上下文的信息。i、 e这可能不是函数的低效,而是如何调用它以及调用频率可能是瓶颈。m_间隔是什么?tidy和isConsistent做什么?当你说工作不够快时,与什么有关?你期望的速度?另一个实现可以更快地完成同样的事情?需要一个参考点。m_intervals是SimpleIntervals的链表,它是另一个实现,可以更快地完成同样的事情。