vs2010下關於vector和動態陣列的效率區別

2021-06-27 05:49:09 字數 838 閱讀 6668

之前在做acm的一道兩路合併排序時一直執行超時,原因就在於我習慣使用vector來儲存資料。而vector和動態陣列在效率上是存在區別的,所以在這裡就討論一下兩者的效率。

從網上資料看在vs中debug和release模式下vector的執行時間存在差別,而對於陣列 而言沒有變化,且總的來說陣列效率高於vector。對於stl而言不同的編譯器效果不同,下面都是用vs2010進行測試。

debug模式下的測試結果是:

基本上vector的執行時間是動態陣列的50倍左右。

release模式下的測試結果是:

vector的執行時間是動態陣列的兩倍左右。且相比debug模式下執行時間均有顯著提高。

結論:至少在vs2010中vector的執行效率是低於動態陣列的。因此在對效率要求較高的情況下建議使用動態陣列。

附測試**:

#include#include#include using namespace std;

int main()

{ vectorvtest;

int *test;

int n,tmp;

long start,end;

while(cin>>n)

{test=new int[n];

start=clock();

for(int i=0;i

vs2010新特性 下

il 0001 ldc.i4.s 10 il 0003 stloc.0 il 0004 ldc.r8 1.2 il 000d stloc.1 il 000e ldc.r4 1.1 il 0013 stloc.2 il 0014 ldc.i4.2 il 0015 newarr mscorlib sys...

vs2010新特性 下

il 0001 ldc.i4.s 10 il 0003 stloc.0 il 0004 ldc.r8 1.2 il 000d stloc.1 il 000e ldc.r4 1.1 il 0013 stloc.2 il 0014 ldc.i4.2 il 0015 newarr mscorlib sys...

vs2010新特性 下

il 0001 ldc.i4.s 10 il 0003 stloc.0 il 0004 ldc.r8 1.2 il 000d stloc.1 il 000e ldc.r4 1.1 il 0013 stloc.2 il 0014 ldc.i4.2 il 0015 newarr mscorlib sys...