3 回答
TA贡献1784条经验 获得超7个赞
如果速度很重要,我会看到运行时间
4 ns int [10],在堆栈上固定大小
40纳秒 <vector>
1300纳秒 <stlsoft/containers/pod_vector.hpp>
对于以下一项愚蠢的测试-只需2次推送,v [0] v [1],2个pop,在一个平台上,仅限mac ppc,gcc-4.2 -O3。(我不知道苹果是否优化了他们的stl。)
不要接受您没有伪造自己的时间。当然,每种使用方式都不同。但是> 2的因素令我感到惊讶。
(如果内存,内存访问是运行时的主要因素,那么各种实现中所有额外的内存是什么?)
#include <stlsoft/containers/pod_vector.hpp>
#include <stdio.h>
using namespace std;
int main( int argc, char* argv[] )
{
// times for 2 push, v[0] v[1], 2 pop, mac g4 ppc gcc-4.2 -O3 --
// Vecint10 v; // stack int[10]: 4 ns
vector<int> v; // 40 ns
// stlsoft::pod_vector<int> v; // 1300 ns
// stlsoft::pod_vector<int, std::allocator<int>, 64> v;
int n = (argv[1] ? atoi( argv[1] ) : 10) * 1000000;
int sum = 0;
while( --n >= 0 ){
v.push_back( n );
v.push_back( n );
sum += v[0] + v[1];
v.pop_back();
v.pop_back();
}
printf( "sum: %d\n", sum );
}
- 3 回答
- 0 关注
- 472 浏览
添加回答
举报