У меня есть две программы со мной, обе выполняют точно такую же задачу. Они просто устанавливают логический массив/вектор в значение true. Программа, использующая вектор требуется 27 секунд для запуска, тогда как программа с массивом с размером в 5 раз больше занимает менее 1 с. Я хотел бы узнать точную причину того, почему существует такая большая разница? Являются векторами действительно ли это неэффективно?
Программа с использованием векторов
#include <iostream>
#include <vector>
#include <ctime>
using namespace std;
int main(){
const int size = 2000;
time_t start, end;
time(&start);
vector<bool> v(size);
for(int i = 0; i < size; i++){
for(int j = 0; j < size; j++){
v[i] = true;
}
}
time(&end);
cout<<difftime(end, start)<<" seconds."<<endl;
}
Время выполнения - 27 секунд
Программа с использованием массива
#include <iostream>
#include <ctime>
using namespace std;
int main(){
const int size = 10000; // 5 times more size
time_t start, end;
time(&start);
bool v[size];
for(int i = 0; i < size; i++){
for(int j = 0; j < size; j++){
v[i] = true;
}
}
time(&end);
cout<<difftime(end, start)<<" seconds."<<endl;
}
Время выполнения - < 1 секунда
Платформа - Visual Studio 2008 ОС - Windows Vista 32 бит SP 1 Процессор Intel (R) Pentium (R) Двойной процессор T2370 @1,73 ГГц Память (RAM) 1,00 ГБ
Спасибо
Амара