矢量和列表之间的性能差异

时间:2017-12-20 02:48:40

标签: c++

我正在使用下面的冒泡排序功能,并且使用

定义Container类型
typedef std::vector<int> Container;

typedef std::list<int> Container;

我像这样编译代码

/ usr / bin / g ++ -g -Wall -fPIC -c -o bubble_sort.o bubble_sort.cc

当容器是一个列表时,该函数可以对约10000个整数进行排序 3.2秒当容器是向量时,该函数对于相同的类型大约需要4.6秒。

我的问题是为什么对于矢量而言性能差得多,以及哪些工具最适合挖掘这样的问题?

void bubbleSort(Container& randomIntegers)
{
    bool swapPerformed;
    do
    {
        swapPerformed = false;
        Container::iterator iter2 = randomIntegers.begin();
        Container::iterator iter1 = iter2++;

        while (iter2 != randomIntegers.end())
        {
            if (*iter1 > *iter2)
            {
                std::swap(*iter1, *iter2);
                swapPerformed = true;
            }
            iter1++;
            iter2++;
        }

    }
    while (swapPerformed);
}

0 个答案:

没有答案