低数据量的参考价值不高,其余数据仅供参考,测试代码在末尾
排序
第一次测试 | 第二次测试 |
STL类型 | 数据量 | 时间 | STL类型 | 数据量 | 时间 |
vector | [10] | 0.002000 ms | vector | [10] | 0.001200 ms |
deque | [10] | 0.001000 ms | deque | [10] | 0.001200 ms |
list | [10] | 0.006100 ms | list | [10] | 0.006300 ms |
vector | [100] | 0.013000 ms | vector | [100] | 0.012800 ms |
deque | [100] | 0.018100 ms | deque | [100] | 0.025500 ms |
list | [100] | 0.034600 ms | list | [100] | 0.034500 ms |
vector | [1000] | 0.167400 ms | vector | [1000] | 0.175100 ms |
deque | [1000] | 0.249500 ms | deque | [1000] | 0.232600 ms |
list | [1000] | 0.335400 ms | list | [1000] | 0.306200 ms |
vector | [10000] | 2.463100 ms | vector | [10000] | 1.860000 ms |
deque | [10000] | 3.980700 ms | deque | [10000] | 3.481800 ms |
list | [10000] | 3.658400 ms | list | [10000] | 3.241400 ms |
vector | [100000] | 22.882200 ms | vector | [100000] | 23.015800 ms |
deque | [100000] | 41.197100 ms | deque | [100000] | 40.967900 ms |
list | [100000] | 38.998300 ms | list | [100000] | 43.113200 ms |
vector | [1000000] | 314.351900 ms | vector | [1000000] | 329.186100 ms |
deque | [1000000] | 479.412800 ms | deque | [1000000] | 544.450100 ms |
list | [1000000] | 419.358300 ms | list | [1000000] | 436.013500 ms |
vector | [10000000] | 3480.290600 ms | vector | [10000000] | 3740.554700 ms |
deque | [10000000] | 5944.471200 ms | deque | [10000000] | 7357.065300 ms |
list | [10000000] | 4605.769500 ms | list | [10000000] | 5654.132900 ms |
vector | [100000000] | 40153.967400 ms | vector | [100000000] | 40712.219500 ms |
deque | [100000000] | 67193.713700 ms | deque | [100000000] | 72516.952100 ms |
list | [100000000] | 118565.940800 ms | list | [100000000] | 118480.152200 ms |
遍历
第一次测试 | 第二次测试 |
STL类型 | 数据量 | 时间 | STL类型 | 数据量 | 时间 |
vector | [10] | 0.000300 ms | vector | [10] | 0.000200 ms |
deque | [10] | 0.000200 ms | deque | [10] | 0.000200 ms |
list | [10] | 0.000200 ms | list | [10] | 0.000200 ms |
vector | [100] | 0.001200 ms | vector | [100] | 0.001400 ms |
deque | [100] | 0.001200 ms | deque | [100] | 0.002700 ms |
list | [100] | 0.000800 ms | list | [100] | 0.001300 ms |
vector | [1000] | 0.010600 ms | vector | [1000] | 0.013100 ms |
deque | [1000] | 0.011500 ms | deque | [1000] | 0.015200 ms |
list | [1000] | 0.013800 ms | list | [1000] | 0.016800 ms |
vector | [10000] | 0.107000 ms | vector | [10000] | 0.105900 ms |
deque | [10000] | 0.112900 ms | deque | [10000] | 0.112700 ms |
list | [10000] | 0.103100 ms | list | [10000] | 0.138700 ms |
vector | [100000] | 1.208000 ms | vector | [100000] | 1.054200 ms |
deque | [100000] | 1.178800 ms | deque | [100000] | 1.137000 ms |
list | [100000] | 1.379400 ms | list | [100000] | 1.410100 ms |
vector | [1000000] | 12.042600 ms | vector | [1000000] | 10.851900 ms |
deque | [1000000] | 14.669900 ms | deque | [1000000] | 11.408100 ms |
list | [1000000] | 23.618800 ms | list | [1000000] | 14.960900 ms |
vector | [10000000] | 119.091800 ms | vector | [10000000] | 107.361400 ms |
deque | [10000000] | 125.525200 ms | deque | [10000000] | 114.837900 ms |
list | [10000000] | 172.976000 ms | list | [10000000] | 138.790100 ms |
vector | [100000000] | 1123.479500 ms | vector | [100000000] | 1085.079900 ms |
deque | [100000000] | 1432.462100 ms | deque | [100000000] | 1231.170600 ms |
list | [100000000] | 26583.275100 ms | list | [100000000] | 29516.611300 ms |
随机访问
第一次测试 | 第二次测试 |
STL类型 | 数据量 | 时间 | STL类型 | 数据量 | 时间 |
vector | [10] | 0.000700 ms | vector | [10] | 0.000700 ms |
deque | [10] | 0.002900 ms | deque | [10] | 0.000900 ms |
vector | [100] | 0.002800 ms | vector | [100] | 0.004300 ms |
deque | [100] | 0.011000 ms | deque | [100] | 0.007700 ms |
vector | [1000] | 0.025600 ms | vector | [1000] | 0.036900 ms |
deque | [1000] | 0.119900 ms | deque | [1000] | 0.084700 ms |
vector | [10000] | 0.252700 ms | vector | [10000] | 0.225000 ms |
deque | [10000] | 0.873800 ms | deque | [10000] | 1.152500 ms |
vector | [100000] | 2.343200 ms | vector | [100000] | 2.418400 ms |
deque | [100000] | 12.636400 ms | deque | [100000] | 8.929900 ms |
vector | [1000000] | 25.948700 ms | vector | [1000000] | 26.397100 ms |
deque | [1000000] | 101.706100 ms | deque | [1000000] | 108.760000 ms |
vector | [10000000] | 263.142900 ms | vector | [10000000] | 258.937900 ms |
deque | [10000000] | 909.556500 ms | deque | [10000000] | 942.929800 ms |
vector | [100000000] | 2512.655600 ms | vector | [100000000] | 2579.265800 ms |
deque | [100000000] | 9093.358000 ms | deque | [100000000] | 9312.056700 ms |
头部和尾部访问
第一次测试 | 第二次测试 |
STL类型 | 数据量 | 时间 | STL类型 | 数据量 | 时间 |
vector | [10] | 0.000300 ms | vector | [10] | 0.000100 ms |
deque | [10] | 0.000100 ms | deque | [10] | 0.000200 ms |
list | [10] | 0.000100 ms | list | [10] | 0.000100 ms |
vector | [100] | 0.000700 ms | vector | [100] | 0.000800 ms |
deque | [100] | 0.000900 ms | deque | [100] | 0.001000 ms |
list | [100] | 0.000700 ms | list | [100] | 0.000700 ms |
vector | [1000] | 0.006900 ms | vector | [1000] | 0.006400 ms |
deque | [1000] | 0.009000 ms | deque | [1000] | 0.008600 ms |
list | [1000] | 0.005100 ms | list | [1000] | 0.005000 ms |
vector | [10000] | 0.060300 ms | vector | [10000] | 0.053400 ms |
deque | [10000] | 0.083200 ms | deque | [10000] | 0.084300 ms |
list | [10000] | 0.062200 ms | list | [10000] | 0.039500 ms |
vector | [100000] | 0.561100 ms | vector | [100000] | 0.352100 ms |
deque | [100000] | 0.765700 ms | deque | [100000] | 0.579800 ms |
list | [100000] | 0.392400 ms | list | [100000] | 0.397100 ms |
vector | [1000000] | 4.997800 ms | vector | [1000000] | 3.506600 ms |
deque | [1000000] | 6.377500 ms | deque | [1000000] | 5.841000 ms |
list | [1000000] | 6.575100 ms | list | [1000000] | 4.604900 ms |
vector | [10000000] | 35.120100 ms | vector | [10000000] | 36.675500 ms |
deque | [10000000] | 60.287000 ms | deque | [10000000] | 65.807300 ms |
list | [10000000] | 39.260500 ms | list | [10000000] | 40.692700 ms |
vector | [100000000] | 383.825800 ms | vector | [100000000] | 354.557900 ms |
deque | [100000000] | 633.038200 ms | deque | [100000000] | 650.863500 ms |
list | [100000000] | 559.928900 ms | list | [100000000] | 521.148300 ms |
头部插入
第一次测试 | 第二次测试 |
STL类型 | 数据量 | 时间 | STL类型 | 数据量 | 时间 |
vector | [10] | 0.003900 ms | deque | [10] | 0.001200 ms |
deque | [10] | 0.001000 ms | list | [10] | 0.006500 ms |
list | [10] | 0.003400 ms | deque | [100] | 0.005400 ms |
vector | [100] | 0.011900 ms | list | [100] | 0.022500 ms |
deque | [100] | 0.003600 ms | deque | [1000] | 0.066600 ms |
list | [100] | 0.013900 ms | list | [1000] | 0.153200 ms |
vector | [1000] | 0.226200 ms | deque | [10000] | 0.451200 ms |
deque | [1000] | 0.034700 ms | list | [10000] | 1.252800 ms |
list | [1000] | 0.107600 ms | deque | [100000] | 4.216300 ms |
vector | [10000] | 18.577300 ms | list | [100000] | 18.595400 ms |
deque | [10000] | 0.353100 ms | deque | [1000000] | 41.286700 ms |
list | [10000] | 1.128600 ms | list | [1000000] | 114.187600 ms |
vector | [100000] | 2278.539000 ms | deque | [10000000] | 410.797500 ms |
deque | [100000] | 3.405600 ms | list | [10000000] | 1448.404100 ms |
list | [100000] | 11.317200 ms | deque | [100000000] | 4396.088100 ms |
跑了几分钟,跑不动了,下次不带vector | list | [100000000] | 41812.761100 ms |
| | | 最后一个list,vscode出现未响应,最终跑完了 |
尾部插入
第一次测试 | 第二次测试 |
STL类型 | 数据量 | 时间 | STL类型 | 数据量 | 时间 |
vector | [10] | 0.001300 ms | vector | [10] | 0.001300 ms |
deque | [10] | 0.000300 ms | deque | [10] | 0.000200 ms |
list | [10] | 0.004800 ms | list | [10] | 0.003700 ms |
vector | [100] | 0.004900 ms | vector | [100] | 0.002000 ms |
deque | [100] | 0.002200 ms | deque | [100] | 0.001700 ms |
list | [100] | 0.018600 ms | list | [100] | 0.013700 ms |
vector | [1000] | 0.029400 ms | vector | [1000] | 0.020600 ms |
deque | [1000] | 0.025200 ms | deque | [1000] | 0.015400 ms |
list | [1000] | 0.118900 ms | list | [1000] | 0.122700 ms |
vector | [10000] | 0.199100 ms | vector | [10000] | 0.176200 ms |
deque | [10000] | 0.183400 ms | deque | [10000] | 0.255800 ms |
list | [10000] | 1.265900 ms | list | [10000] | 1.062200 ms |
vector | [100000] | 1.648100 ms | vector | [100000] | 1.829100 ms |
deque | [100000] | 1.544900 ms | deque | [100000] | 1.524100 ms |
list | [100000] | 11.430800 ms | list | [100000] | 11.829800 ms |
vector | [1000000] | 15.847200 ms | vector | [1000000] | 15.055700 ms |
deque | [1000000] | 15.840700 ms | deque | [1000000] | 16.084700 ms |
list | [1000000] | 116.323400 ms | list | [1000000] | 138.607200 ms |
vector | [10000000] | 190.234400 ms | vector | [10000000] | 150.832000 ms |
deque | [10000000] | 219.416800 ms | deque | [10000000] | 159.012100 ms |
list | [10000000] | 1217.601900 ms | list | [10000000] | 1271.417400 ms |
vector | [100000000] | 1622.149100 ms | vector | [100000000] | 1656.439900 ms |
deque | [100000000] | 1869.682200 ms | deque | [100000000] | 1878.220700 ms |
list | [100000000] | 38475.655500 ms | list | [100000000] | 34766.071100 ms |
最后一个list,vs差点崩了 | | | |
中间插入
第一次测试 | 第二次测试 |
STL类型 | 数据量 | 时间 | STL类型 | 数据量 | 时间 |
vector | [10] | 0.008500 ms | vector | [10] | 0.005900 ms |
deque | [10] | 0.008000 ms | deque | [10] | 0.020400 ms |
list | [10] | 0.005400 ms | list | [10] | 0.004300 ms |
vector | [100] | 0.018000 ms | vector | [100] | 0.015700 ms |
deque | [100] | 0.061700 ms | deque | [100] | 0.137300 ms |
list | [100] | 0.022600 ms | list | [100] | 0.022700 ms |
vector | [1000] | 0.278800 ms | vector | [1000] | 0.279100 ms |
deque | [1000] | 1.839200 ms | deque | [1000] | 1.328000 ms |
list | [1000] | 0.253800 ms | list | [1000] | 0.180200 ms |
vector | [10000] | 15.583300 ms | vector | [10000] | 12.697400 ms |
deque | [10000] | 95.036400 ms | deque | [10000] | 97.230200 ms |
list | [10000] | 1.099600 ms | list | [10000] | 1.111200 ms |
vector | [100000] | 1454.757300 ms | vector | [100000] | 1422.218700 ms |
deque | [100000] | 8460.501500 ms | deque | [100000] | 8300.219100 ms |
list | [100000] | 12.281500 ms | list | [100000] | 10.739700 ms |
vector跑不动了,更不用说deque | vector跑不动了,deque更不用说 |
不带参构造
第一次测试 | 第二次测试 |
STL类型 | 数据量 | 时间 | STL类型 | 数据量 | 时间 |
vector | [10] | 0.005500 ms | vector | [10] | 0.006900 ms |
deque | [10] | 0.000700 ms | deque | [10] | 0.000700 ms |
list | [10] | 0.003100 ms | list | [10] | 0.003000 ms |
vector | [100] | 0.001100 ms | vector | [100] | 0.001100 ms |
deque | [100] | 0.002600 ms | deque | [100] | 0.001400 ms |
list | [100] | 0.020500 ms | list | [100] | 0.018500 ms |
vector | [1000] | 0.020700 ms | vector | [1000] | 0.010600 ms |
deque | [1000] | 0.023800 ms | deque | [1000] | 0.019700 ms |
list | [1000] | 0.170900 ms | list | [1000] | 0.210600 ms |
vector | [10000] | 0.041400 ms | vector | [10000] | 0.047700 ms |
deque | [10000] | 0.103500 ms | deque | [10000] | 0.154000 ms |
list | [10000] | 1.194500 ms | list | [10000] | 1.074400 ms |
vector | [100000] | 0.399300 ms | vector | [100000] | 0.388900 ms |
deque | [100000] | 1.080400 ms | deque | [100000] | 1.346600 ms |
list | [100000] | 10.583600 ms | list | [100000] | 10.115300 ms |
vector | [1000000] | 2.886400 ms | vector | [1000000] | 2.451400 ms |
deque | [1000000] | 11.380100 ms | deque | [1000000] | 10.980700 ms |
list | [1000000] | 123.498700 ms | list | [1000000] | 106.067900 ms |
vector | [10000000] | 27.910400 ms | vector | [10000000] | 26.024500 ms |
deque | [10000000] | 107.859500 ms | deque | [10000000] | 107.314800 ms |
list | [10000000] | 1078.205400 ms | list | [10000000] | 1005.951800 ms |
vector | [100000000] | 330.551500 ms | vector | [100000000] | 254.550300 ms |
deque | [100000000] | 2675.832300 ms | deque | [100000000] | 1161.987800 ms |
list | [100000000] | 24754.977400 ms | list | [100000000] | 15862.966400 ms |
析构的时间没有测,应该和构造的时间差不多。
测试代码
#include <vector>
#include <list>
#include <deque>
#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include "headers/timer.hpp"
using namespace std;
#define MAX_DATA 1e8 //最大数据量1亿
#ifdef RAND_MAX
#undef RAND_MAX
#define RAND_MAX 1e8 //修改rand()函数的最大值
#endif
int main()
{
size_t N = 10;
for(; N <= MAX_DATA; N *= 10) //每次循环数据量*10
{
// vector部分
vector<int> v;
Timer t;
v.resize(N);
// sort(v.begin(), v.end()); //排序
// for(auto i = v.begin(); i != v.end(); ++i); //遍历
// for(int i = 0; i < N ; ++i) v[rand() % N]; //随机访问
// for(int i = 0; i < N; ++i) v.begin(); v.end(); //头尾访问
// for(int i = 0; i < N; ++i) v.emplace(v.begin(), 0); //头部插入
// for(int i = 0; i < N; ++i) v.emplace_back(0); //尾部插入
auto it_v = v.begin() + N/2; //中间插入
t.Start();
for(int i = 0; i < N; ++i) {
it_v = v.emplace(it_v, 0);
}
t.Stop();
cout << "vector:[" << N << "]: ";
t.Display();
cout << endl ;
//deque部分
deque<int> d;
d.resize(N);
// sort(d.begin(), d.end());
// for(auto i = d.begin(); i != d.end(); ++i);
// for(int i = 0; i < N ; ++i) d[rand() % N];
// for(int i = 0; i < N; ++i) d.begin(); d.end();
// for(int i = 0; i < N; ++i) d.emplace(d.begin(), 0);
// for(int i = 0; i < N; ++i) d.emplace_back(0);
auto it_d = d.begin() + N/2;
t.Start();
for(int i = 0; i < N; ++i) {
it_d = d.emplace(it_d, 0);
}
t.Stop();
cout << "deque:[" << N << "]: ";
t.Display();
cout << endl;
//list部分
list<int> l;
l.resize(N);
// l.sort();
// for(auto i = l.begin(); i != l.end(); ++i);
// for(int i = 0; i < N; ++i) l.begin(); l.end();
// for(int i = 0; i < N; ++i) l.emplace(l.begin(), 0);
// for(int i = 0; i < N; ++i) l.emplace_back(0);
auto it = l.begin();
for(int i = 0; i < N / 2; ++i, ++it);
t.Start();
for(int i = 0; i < N; ++i) {
it = l.emplace(it, 0);
}
t.Stop();
cout << "list:[" << N << "]: ";
t.Display();
cout << endl;
}
}