resize array
Ostatnio zmodyfikowano 2013-04-27 01:11
pekfos |
» 2013-04-26 17:21:04 Podaj jeszcze te wyniki. U mnie np ten program się wysypuje (0xC00000FD mówi samo za siebie) ;) vector < Test > vTest1; for( i = 0; i < 1000000; ++i ) vTest1.push_back( Test( i ) ); Ha ha ha. |
|
akwes |
» 2013-04-26 17:24:55 Ja się nie denerwuje :) I dalej nie widzę co jest w nich magicznego. Bo dalej nie widzę przewagi nad std::vector. SetLength(MojaTablica,high(MojaTablica)+2); MojaTablica[high(MojaTablica)] := ElementDoDodania;
Przecież taki sposób dodawania elementu na koniec woła o pomstę do nieba... |
|
Elaine |
» 2013-04-26 17:34:37 Ciekawy benchmark. Czasy tworzenia: 0 0 0 0
Czasy dostepu: 0 0 0 0 |
|
crash |
» 2013-04-26 17:49:45 Ja też bardziej lubię C++ niż Pascala, nic do dodania bo to nie ma sensu żadnego ;p Co do programu, pod Ubuntu 11.04 działa, na chwilę obecną nie mam windy. GetTickCount powinno pomóc (windows.h) http://i.imgur.com/UJIbUAq.png |
|
akwes |
» 2013-04-26 18:06:55 Nie ma co dyskutować, nad wynikami skoro cały test jest zły. Same wyniki są z duszy wzięte i to na oko widać. Chociażby zobacz co napisał Ci pekfos. Start( s[ 0 ] ); Test T[ 1000000 ]; Stop( s[ 0 ] );
Start( s[ 1 ] ); Test * TT = new Test[ 1000000 ]; Stop( s[ 1 ] );
Start( s[ 2 ] ); vector < Test > vTest1;
for( i = 0; i < 1000000; ++i ) vTest1.push_back( Test( i ) );
Stop( s[ 2 ] );
Jeżeli zapisy z tych trzech "testów" mają być równoznaczne, to Po pierwsze: vTest1.resize( 1000000 );
a po drugie jeszcze lepiej: vector < Test > vTest1( 1000000 );
Dalej już nawet nie sprawdzałem. |
|
ison |
» 2013-04-26 19:35:25 |
|
akwes |
» 2013-04-26 19:47:15 @ison, Alueril Ci tam odpisał dowód, który pokazuje pewną rzecz.
Kod std::vectora najwyraźniej daje więcej możliwości kompilatorowi do optymalizacji.
Napisałem sobie własny mały test i przy wyłączonej optymalizacji tablica dynamiczna jest szybsza od std::vector, ale przy włączonej optymalizacji to std::vector ma lepsze wyniki. Czyli wszystko będzie zależne od kontekstu w jakim jest wywołany test i czy kompilatorowi uda się coś zoptymalizować.
Zresztą, temat zaczął się od tablicy w Delphi i o tym, że w C++ trzeba kombinować. Nie wiem czemu sprawdzamy szybkość rzeczy z C++... |
|
ison |
» 2013-04-26 21:42:38 @akwes tak, czytałem. Aczkolwiek to i tak zależy od implementacji kompilatora, a bezpieczniej jest zazwyczaj użyć zwykłej tablicy jeśli kładzie się duży nacisk na wydajność. Przykładowo na OI'owym kompilatorze (tym co był rok temu, teraz nie sprawdzałem) iterowanie po wektorze jest znacznie wolniejsze. |
|
1 « 2 » 3 |