gpt4 book ai didi

C++ vector 内存分配和运行时?

转载 作者:行者123 更新时间:2023-11-28 07:23:51 24 4
gpt4 key购买 nike

我刚刚编写了一个小型 C++ 程序,只是为了了解 vector 如何与内存一起工作以及在运行时发生了什么。

这是我的代码:

#include <iostream>
#include <cstdio>
#include <ctime>
#include <vector>

int main(){

clock_t start, end;

int x;

std::vector<int> a(5, 100);

start = clock();

for(int i = 0 ; i <= 900000000 ; i++){
x = a[0];
x = a[1];
x = a[2];
x = a[3];
x = a[4];
}

end = clock();

clock_t duration = end - start;

double durationPerSec = duration / (double)CLOCKS_PER_SEC;

std::cout << "Run-time : " << durationPerSec << std::endl;

return 0;
}

我得到了这个输出:

Run-time : 18.7843

当我通过用动态数组替换 vector 来编写相同的代码时,运行时持续时间更容易接受:

Run-time : 2.9526

我知道这段代码很愚蠢,但我想知道为什么当我使用 vector 时运行时间这么长?那是因为我以错误的方式使用它还是因为有些东西我不明白?

感谢您的回复。

最佳答案

我用 g++ -O0 a.cc 运行它并得到

    Run-time : 18.99

但如果我使用 g++ -O2 a.cc

    Run-time : 0

为了更准确,我用 time ./a.out 运行第二个

time ./a.out
Run-time : 0

real 0m0.009s
user 0m0.002s
sys 0m0.002s

我把循环改成了

for(int i = 0 ; i <= 900000000 ; i++){
a[0] = i ;
a[1] = i + a[0];
a[2] = a[1] + a[2];
a[3] = i + a[1] + a[2];
a[4] = i + a[1] + a[2] + a[3];
x = a[0];
x = a[1];
x = a[2];
x = a[3];
x = a[4];
}

然后是g++ -O2的结果是

time ./a.out
Run-time : 1.81

real 0m1.817s
user 0m1.811s
sys 0m0.001s

关于C++ vector 内存分配和运行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19053505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com