Я попробовал 2 вещи: (псевдокод ниже)Векторная инициализация медленнее, чем массив ... почему?
int arr[10000];
for (int i = 0; i < 10000; i++)
{
for (int j = 0; j < 10000; j++)
{
arr[j] = j;
}
}
и
vector<int> arr(10000);
for (int i = 0; i < 10000; i++)
{
for (int j = 0; j < 10000; j++)
{
arr[j] = j;
}
}
Я побежал как программы и засек его с помощью команды оболочки "время". Программа 1 работает через 5 секунд, программа 2 запускается через 30 секунд. Я запускал обе программы с оптимизацией компилятора, и обе программы работали примерно в одно и то же время (0,38 с). Я смущен этими результатами. Может кто-нибудь объяснить мне, почему это происходит?
Спасибо!
Вы имеете в виду, что они занимали 5/30 секунд с оптимизацией * off *? – jalf
Имейте в виду, что они не совсем эквивалентны. Вектор выделяет кучу по умолчанию, но массив находится в стеке. – GManNickG
Hi jalf, да, это было частью моего вопроса. Я был также смущен тем, как они выполнялись в одно и то же время после оптимизации. – Aishwar