Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] problem z new (delete) oraz klasą

Ostatnio zmodyfikowano 2010-09-22 17:29
Autor Wiadomość
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.
P-22240
DejaVu
» 2010-09-21 21:53:49
1%? To przekaż długi ciąg znaków za pomocą stringa to zobaczymy :)

/edit:
C/C++
#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';
    } //for
   
    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.
P-22243
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.
P-22244
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.
P-22246
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");" ? :)
P-22260
DejaVu
» 2010-09-22 17:19:46
C/C++
//plik *.h
extern Klasa * bla;


//plik: *.cpp
Klasa * bla = new Klasa;
P-22261
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2010-09-22 17:29:17
Już działa, dzięki za pomoc :)
P-22263
1 « 2 »
Poprzednia strona Strona 2 z 2