Próbowałem 2 rzeczy: (pseudo kod poniżej)Wektor inicjalizujący wolniej niż tablica ... dlaczego?
int arr[10000];
for (int i = 0; i < 10000; i++)
{
for (int j = 0; j < 10000; j++)
{
arr[j] = j;
}
}
i
vector<int> arr(10000);
for (int i = 0; i < 10000; i++)
{
for (int j = 0; j < 10000; j++)
{
arr[j] = j;
}
}
Pobiegłem oba programy i planowane go za pomocą polecenia powłoki "czas". Program 1 działa w ciągu 5 sekund, program 2 działa w ciągu 30 sekund. Uruchomiłem oba programy z włączoną optymalizacją kompilacji i oba programy działały mniej więcej w tym samym czasie (0,38s). Jestem zdezorientowany tymi wynikami. Czy ktoś może mi wyjaśnić, dlaczego tak się dzieje?
Dzięki!
Czy masz na myśli, że zajęło 5/30 sekund z optymalizacją * wyłączona *? – jalf
Należy pamiętać, że nie są one dokładnie równoważne. Wektor domyślnie przydziela stertę, ale tablica jest na stosie. – GManNickG
Cześć, tak, to było częścią mojego pytania. Byłem także zdezorientowany tym, jak zostały wykonane w tym samym czasie po optymalizacji. – Aishwar