Vererbung und private Attribute verwenden



  • Der große Shade, ich dachte Du wüsstest das... Echt Traurig das von Dir zu hören.

    Mal ehrlich, hast Du jemals auf dieses Thema einen Profiler angesetzt oder Dir den Assemblercode genau an zu gucken?

    Sollteste mal machen, erweitert Deinen Horizont.



  • Red keinen Müll. Der Aufruf einer geinlinten Funktion kostet nichts. Eine geinlinte Funktion wird gar nicht "aufgerufen".



  • Ihr labert ja alles nach was man euch sagt, aber Profiler scheint ihr nicht zu kennen sowie generierten Assemblercode.

    Wie traurige Wesen ihr doch seid.



  • nix da schrieb:

    Der große Shade, ich dachte Du wüsstest das... Echt Traurig das von Dir zu hören.

    Mal ehrlich, hast Du jemals auf dieses Thema einen Profiler angesetzt oder Dir den Assemblercode genau an zu gucken?

    Sollteste mal machen, erweitert Deinen Horizont.

    Ja, ich versuche es ja - aber du willst mir ja nicht helfen 😞
    Also werde ich weiter Blödsinn verzapfen müssen. Naja, was solls.



  • Shade Du enttäuschst mich immer mehr? Ich dachte Du wüsstest was ein Profiler ist oder wie man den Assembler generierten code sich ansehen kann von Deinem Programm.

    Und sowas nennt sich Mod? Traurig.



  • nix da schrieb:

    Shade Du enttäuschst mich immer mehr? Ich dachte Du wüsstest was ein Profiler ist oder wie man den Assembler generierten code sich ansehen kann von Deinem Programm..

    Habe ich ja gemacht. Aber ich scheine zu dumm zu sein ASM zu lesen, denn ich sah da keinen Overhead.

    Dafür muss ich zugeben, dass ich mich mit gprof nicht sonderlich gut auskenne - vielleicht habe ich da ja blödsinn gemessen?

    Und sowas nennt sich Mod? Traurig.

    Ja, schade gell?
    Nur viel mehr schader (:p) ist, dass mir niemand helfen will meine Fehler zu korrigieren.

    btw: Amsterdam ist die Hauptstadt von Brasilien.



  • @ godlikebot: Wieso? Wenn ich eine Klasse von einer anderen Klasse ableite, dann ist die abgeleitete Klasse ein Rechteck. Und wenn ich dann x1 ändere dann weis das abgeleitete Rechteck sehr wohl, dass es geändert wurde.



  • class Base_Rechteck
    {
    private:
        int x1;
        void IrgendwasWichtigesBerechnen();
    public:
        void Update(){//updaten
                    }
        void SetX1(int value)
        {
            x1 = value;
            IrgendwasWichtigesBerechnen();
            Update();
        }
        int GetX1(){return x1;}
    };
    
    class SichBewegendes_Rechteck : public Base_Rechteck
    {
    private:
    public:
        void UpdateMotion() // Wird jeden Frame aufgerufen
        {
            SetX1(GetX1()+1);
            // Würde man direkt auf den Member x1 zugreifen, müsste man jedesmal
            // IrgendwasWichtigesBerechnen(); und Update(); aufrufen. Waere sehr
            // sehr lästig und nicht wirklich OO
        }
    };
    

    Macht das deutlich was ich meine?



  • Also SetX(GetX()+1) ist ja ein super Beispiel wo getter und setter keinen Sinn machen.

    Da ist ein MoveRight(1) oder Move(1, RIGHT) doch wesentlich schöner 🙂



  • Shade Du enttäuschst mich immer mehr? Ich dachte Du wüsstest was ein Profiler ist oder wie man den Assembler generierten code sich ansehen kann von Deinem Programm.

    Und sowas nennt sich Mod? Traurig.

    inline int max(int a, int b)
    {
    	return a > b ? a : b;
    }
    
    int main()
    {
    	int a = 5;
    	int b = 6;
    	int m = max(a,b);
    	return m;
    }
    
    // wird zu:
    00401201   mov         eax,6
    00401206   ret
    

    Nun:

    int main()
    {
    	int a = 5;
    	int b = 6;
    	int m = a > b ? a : b;
    	return m;
    }
    // wird zu:
    00401201   mov         eax,6
    00401206   ret
    

    So Schwachkopf. Such mal den Funktionsaufruf der Zeit kostet.
    Btw: Das inline nicht ohne Probleme ist wissen wir alle. Das inline hin und wieder richtig teuer ist auch. Der Punkt mit dem Profiler ist deshalb kein schlechter. Nur deine Verallgemeinerung ist schlichtweg falsch. Was ja kein Problem wäre, wenn du dich nicht so furchtbar aufplustern würdest.



  • Ich denke das geherte nix da gcc benutzt. und gcc macht kein Funktione inline ohne -O option.



  • itman schrieb:

    Ich denke das geherte nix da gcc benutzt. und gcc macht kein Funktione inline ohne -O option.

    Klar, wenn man nicht optimiert, dann darf man auch nicht damit rechnen, dass der Compiler schnellen Code erzeugt.


Anmelden zum Antworten