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的链表,它是另一个实现,可以更快地完成同样的事情。