[C++] problem z new (delete) oraz klasą
Ostatnio zmodyfikowano 2010-09-22 17:29
ThudPoland |
» 2010-09-21 21:43:58 Sam chyba jutro zrobię testy wydajności, bo teraz to chyba zrobiłem test na pamięciożerność, tak, że system brał ponad giga więcej RAM'u. ;D
Muszę iść na prockożerność. To jest tak jak z mięśniami - albo idzie się na siłę albo masę. xD
Ale nie offtopujmy. |
|
DejaVu |
» 2010-09-21 21:53:49 1%? To przekaż długi ciąg znaków za pomocą stringa to zobaczymy :)
/edit:
#include <iostream> #include <string> #include <tools/Time.hpp>
std::string test1( std::string zmienna1, std::string zmienna2 ) { return zmienna1 + zmienna2; }
std::string test2( const std::string & zmienna1, const std::string & zmienna2 ) { return zmienna1 + zmienna2; }
int main() { tools::CTime timer; std::string s1, s2; for( int i = 0; i < 1000; i++ ) { s1 += 'a'; s2 += 'b'; } timer.Set( 0 ); for( int i = 0; i < 1000 * 1000; i++ ) test1( s1, s2 ); timer.Update(); std::cout << timer.Get() << std::endl; timer.Set( 0 ); for( int i = 0; i < 1000 * 1000; i++ ) test2( s1, s2 ); timer.Update(); std::cout << timer.Get() << std::endl; return 0; }
Standardowe wyjście programu:
9.4094
5.79792
Dodam, że std::string nie kopiuje danych dopóki nie nastąpi modyfikacja, więc de'facto to jest czas kopiowania struktury bez uwzględnienia danych. |
|
szyx_yankez |
» 2010-09-21 22:02:02 Przekazywałem "text" hmm... 4 litery. Faktycznie, zobacze ale jutro bo dzisjaj juz spać ide, a kodu tego tesu nie zapisałem. |
|
Elaine |
» 2010-09-21 22:27:37 Dodam, że std::string nie kopiuje danych dopóki nie nastąpi modyfikacja |
Nieprawda - liczące się implementacje biblioteki standardowej już z tego zrezygnowały (libstdc++ jest wyjątkiem), ponieważ copy-on-write ma problemy z wielowątkowością (w najlepszym wypadku wymaga użycia operacji atomowych), a za pozbycie się tych problemów płaci się nawet, gdy kod nawet nie ma pojęcia, czym są wątki. |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2010-09-22 16:56:55 ekhem... nie chcę Wam tutaj przerywać tej wspaniałej dyskusji, lecz czy ktoś mógłby mi pomóc z tym np "klasowe->Text("tekst");" ? :) |
|
DejaVu |
» 2010-09-22 17:19:46 extern Klasa * bla;
Klasa * bla = new Klasa;
|
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2010-09-22 17:29:17 Już działa, dzięki za pomoc :) |
|
1 « 2 » |