私の現在のプロジェクトでは、大きなデータ配列を操作する必要があります。だから私はどちらが良いかを確認するために愚かなテストを行いますが、以下のコードを試してみると、動的配列は静的配列よりもはるかに遅いことがわかりましたなぜそうですか?または私は何か間違ったことをしていますか?
ここにコードがあります(ここからベクトル(動的に等しい)を削除し、配列(静的に等しい)をブーストします)
結果:静的8、動的7493
#include<iostream>
#include<vector>
using namespace std;
using namespace boost;
double arr_time;
double darr_time;
void arrr()
{
int arr[100000];
LARGE_INTEGER start,end;
QueryPerformanceCounter(&start);
for(int i=0 ; i <100000 ; ++i)
{
arr[i] = 10 ;
}
for(int i=0 ; i <100000 ; ++i)
{
int x = arr[i];
}
QueryPerformanceCounter(&end);
arr_time += (end.LowPart - start.LowPart);
}
void darr()
{
int *arr = new int[100000];
LARGE_INTEGER start,end;
QueryPerformanceCounter(&start);
for(int i=0 ; i <100000 ; ++i)
{
arr[i] = 10 ;
}
for(int i=0 ; i <100000 ; ++i)
{
int x = arr[i];
}
QueryPerformanceCounter(&end);
darr_time += (end.LowPart - start.LowPart);
delete[] arr;
}
int main(int argc, char** argv)
{
for(int i= 0 ; i <100 ; ++i)
{
arrr();
darr();
}
cout<<"\n--------------------\n";
cout<<arr_time<<endl;
cout<<darr_time<<endl;
return 0;
}