C ++如何让函数执行得更快?

时间:2016-06-04 15:47:35

标签: c++ function

我有这个功能,而且他们的工作速度不够快。你知道如何以更有效的方式写它吗?

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());
}

1 个答案:

答案 0 :(得分:0)

push_back()可能很重,具体取决于容器。如果您在向量中使用它,可以尝试预先保留大小,如果您知道它,或者保留更大的块以减轻分配开销。

更新:

说实话,问题太模糊了。整洁()& isConsistent()是黑盒子,它不知道它们是做什么的,它们是如何做的,以及它们是否可以做得更好。因此,评论函数中代码的效率可能是一个红色的鲱鱼。

除非需要在容器中途快速插入和移除,否则将列表用作容器可能不是最佳选择。 Vector可能是一个更好的选择,应该以一种方式将分配减少到最小(重新分配需要容器的整个内容的副本,因此它越大,它对push_back()越慢,更喜欢保留(如果可能的话)。

此外,没有提供有关此功能使用情况的信息。即它可能不是函数中的低效率,而是它的调用方式以及它被调用的频率可能是瓶颈。