如何使用“vector<>”来加速慢速代码?

时间:2016-03-25 18:32:19

标签: visual-c++

目前,我使用矢量容器作为算法。 算法结果非常好,但运行时间是个大问题。所以我尝试在一些测试程序中使用new和delete等其他数据结构。运行时间比使用矢量少200倍。

最后,我的问题是:有没有办法通过使用new更改代码,这样我就不必更改超过10,000行的整个代码,因为我经常使用vector-methods。

但是,访问测试程序中的元素所需的时间可能是最大的问题。

struct SOME_ELEMENTS
{
int a;
float b;
vector<int> c;
};

void function_1(vector<SOME_ELEMENTS> &elements, int number)
{
    vector<SOME_ELEMENTS> temp_elements;
    vector<SOME_ELEMENTS> best_elements = elements;

    while (true)
    {
        temp_elements = elements
        for (int i = 0; i < number; i++)
        {
            temp_elements[i].c.push_back(i);
            //change temp_elements in many other way
            //calculate a value depending on temp_elements

            if (true)
            {
                best_elements = temp_elements;
            }

        }

        if(true)
        {
             elements = best_elements;
        }
        //termination_criterium
    }

}

void main()
{

    int no;
    vector<SOME_ELEMENTS> a;
    //set values for a and no
    function_1(a, no);


    _getch();
}

这里使用矢量慢200倍的例子:

void main()
    {
    int no = 100000;
    int runnings = 10000000;

    //int *big_vect = new int[no];
    vector<int> big_vect(no);

    int a = 1;

    big_vect[no - 1] = 1;

    clock_t start_time, end_time, computing_time;

    start_time = clock();


    for (int i = 0; i < runnings; i++)
    {
        big_vect[no - 1] = big_vect[no - 1] + 1;

    }

    end_time = clock();
    computing_time = end_time - start_time;

    _getch();
}

提前,谢谢你的帮助!

0 个答案:

没有答案