string vs char*



  • ich will damit sagen, das es performance technisch gesehen.. keine "relevanten" unterschiede gibt;)





  • Er Russe und nix Deutsch egro nicht 100% Deutsch Rechtschreibung.

    Hier im Forum wird schikaniert wo's nur geht hab ich schon erkannt.



  • performance schrieb:

    was ist perfomierter?
    String oder char*
    vector oder array was benutzt ihr?

    Hmmm, also ich kenne "Perdormance" nur Laufzeitmessungen - und diese nur von Vorgängen und niemals von Objekten. Der Begriff "Performance" ist also nur verwendbar, wenn man etwas tut und ich würde sagen, solange nicht irgendwie definiert wird, was mit char*, string, vector, .... getan werden soll (und wie), ist schon die Fragestellung nicht sinnvoll.

    Analog: "Ist Fahren violetter als Schwimmen ?" 😉

    Das klingt vllt. etwas abgehoben, soll aber auf ein Kernproblem hinweisen: Wer einen Vergleich trotzdem versucht, wird sich Ewigkeiten in "Äpfel&Birnen"-Problemen verheddern...

    Gruß,

    Simon2.



  • BorisDieKlinge schrieb:

    ich will damit sagen, das es performance technisch gesehen.. keine "relevanten" unterschiede gibt;)

    Es gibt je nachdem was man damit aufführt ganz dramatische Unterschiede.
    Was nicht heissen soll dass man verfrüht optimieren sollte.

    Oder würdest du es für sinnvoll und gut erachten eine Vektorklasse für nen 3D Spiel z.B. so zu implementieren:

    template <class T, unsigned N> class Vector
    {
    public:
        Vector() : m_vec(N) {}
        // ...
    private:
        std::vector<T> m_vec;
    };
    

    Und sag jetzt nicht das sei Realitätsfremd, denn das ist 1:1 einem realen Beispiel nachempfunden. Code der als production-ready abgegeben wurde. Bloss dass dort gleich die std::vector<float> rumgereicht wurden, ohne Wrapper-Klasse. By Value. An 100 Stellen. Und zugewiesen und verglichen und ... ich glaube man kann sich ein Bild machen.

    EDIT:

    solange nicht irgendwie definiert wird, was mit char*, string, vector, .... getan werden soll (und wie), ist schon die Fragestellung nicht sinnvoll (...)

    ACK

    Ist Fahren violetter als Schwimmen ?

    Weiss nicht, aber nachts isses ganz sicher kälter als draussen 😃



  • hustbaer schrieb:

    BorisDieKlinge schrieb:

    ich will damit sagen, das es performance technisch gesehen.. keine "relevanten" unterschiede gibt;)

    Es gibt je nachdem was man damit aufführt ganz dramatische Unterschiede.
    Was nicht heissen soll dass man verfrüht optimieren sollte.

    Oder würdest du es für sinnvoll und gut erachten eine Vektorklasse für nen 3D Spiel z.B. so zu implementieren:

    template <class T, unsigned N> class Vector
    {
    public:
        Vector() : m_vec(N) {}
        // ...
    private:
        std::vector<T> m_vec;
    };
    

    Und sag jetzt nicht das sei Realitätsfremd, denn das ist 1:1 einem realen Beispiel nachempfunden. Code der als production-ready abgegeben wurde. Bloss dass dort gleich die std::vector<float> rumgereicht wurden, ohne Wrapper-Klasse. By Value. An 100 Stellen. Und zugewiesen und verglichen und ... ich glaube man kann sich ein Bild machen.

    Falsche Parameterübergabe hat aber nichts mit dem eigetnlichen Performanceunterschied zwischen vector und array zu tun 🙄

    aber is doch eh nur n troll thread...



  • 666...... schrieb:

    Falsche Parameterübergabe hat aber nichts mit dem eigetnlichen Performanceunterschied zwischen vector und array zu tun

    Oh Mann du Doofnuss.
    Dass die Teile by value rumgereicht wurden ist doch nur das Tüpfelchen auf dem i.
    Als Returnwert z.B. MUSS hier kopiert werden, und einen std::vector<float> mit Grösse 3 zu kopieren kostet halt einfach zig mal mehr als schnell mal eben 3 floats rumzuschieben.



  • ACK, aber:

    class Foo{
    ...
    pulbic:
    Foo(){..}
    Foo(const Foo &scr){
    .
    .
    .
    }
    .
    .
    };
    
    Foo *pA= new Foo[10];
    std::vector<Foo> pV(10);
    .
    .
    .
    .
    

    geht es hier nich gleich lan das array oder den vector zu kopieren?



  • hustbaer schrieb:

    666...... schrieb:

    Falsche Parameterübergabe hat aber nichts mit dem eigetnlichen Performanceunterschied zwischen vector und array zu tun

    Oh Mann du Doofnuss.
    Dass die Teile by value rumgereicht wurden ist doch nur das Tüpfelchen auf dem i.
    Als Returnwert z.B. MUSS hier kopiert werden, und einen std::vector<float> mit Grösse 3 zu kopieren kostet halt einfach zig mal mehr als schnell mal eben 3 floats rumzuschieben.

    ach ja, dass hier die Leute immer dann meinen den anderen als dumm darstellen zu müssen, wenn sie es selber sind...

    schau dir mal Google: named return value optimization an

    Und wenn du da wirklich ein Performace Problem hast, weils dein Compiler nicht optimieren kann, dann kannst du das gleiche selber machen. Und somit sind wir wieder bei

    Falsche Parameterübergabe hat aber nichts mit dem eigetnlichen Performanceunterschied zwischen vector und array zu tun

    🙄

    P.S: Auf das nächste dumme geflame werd ich nicht mehr antworten



  • 🙄
    Wie immer: Die Anonymität des Internets verleitet anscheinend immer dazu, unfreundlicher, ruppiger, pampiger, ... zu schreiben - und gleichzeitig viel empfindlicher zu lesen. Schon interessant, dass Gelassenheit durch die Distanz und Unverbindlichkeit nicht zu- sondern abnimmt.....

    Gruß,

    Simon2.


Anmelden zum Antworten