Funktionsaufruf aus klasse bringt performanceeinbruch?
-
frag mich doch nicht wieso da 2 assembler aufrufe stehen? Ich hab nur Geschrieben:
OpenGLEngine::getInstance().clear (1,0,1);
mehr hab ich auch net geschrieben und wie der Meyerssingleton aussieht weis man doch, oder?
-
Die Kristallkugel ist defekt. Deswegen kann ich Dir nich weiterhelfen.
(Wäre ja noch die Möglichkeit z.B. das Du das Singleton Objekt immer wieder neu erstellst etc.)
-
ich hab den singleton aus HummeSikkins FAQ kopiert, halt den Meyerssingleton.
-
HILFE!!! schrieb:
ja jede nanosek ist mir wichtig, weil ich nicht speed durch so eine lepsche sache verlieren will die ich umbedingt für andere sachen brauche z.B. KI. nebenbei möchte ich das mein Programm auf sehr alten rechnern läuft und deshalb ist mir optimierung sowieso sehr wichtig!
Du verlierst keine Zeit, die die später woanders brauchen könntest.
Später berechnest du die ganze Spiellogik und dann kommst du gar nicht mehr so oft dazu, zu clearen. Und dann spielen die drei ns hin oder her gleich gar keine Rolle mehr.
-
Im ASM Code stehen 2(!) Aurfufe - warum?
Wo? clear wird nur einmal aufgerufen, aber getInstance wird zweimal aufgerufen, was wirklich interessant ist. Macht nicht wirklich sinn.
Mach mal folgendes:
// Am anfang irgendwo: OpenGLEngine & tmp = OpenGLEngine::getInstance(); // und der Aufruf: tmp.clear (1,0,1);
-
Die wichtigste Aussage meines Postings war:
warum
OpenGL::Instance().clear(); ?Was spricht gegen
OpenGL::clear()?
-
Ich verstehe ja, dass überfrühte Optimierung böse ist, aber wenn purer Code derart schneller ist als ein Meyers-Singleton-Aufruf + exakt derselbe Code, dann ist es doch *sehr* wahrscheinlich, dass jedes weitere Meyers-Singleton *genauso* bremst. Und damit hätte ich jedenfalls nicht gerechnet...
OpenGLDingens::getInstance() ist inline und steht im Header, oder? Wenn nicht, sollte es wohl dahin. Wenn ja, dann wundert es mich, dass es nicht geinlinet wird (wegen der static-Variable?).
Was ist dieses RTC_Dings? Klingt nach Runtime-Checks, klingt nach Debugmodus, klingt langsam. Ist das asm-Code aus einem Release-Kompilat?
Wenn du glaubst, dass der Singleton so langsam ist, warum postest du nicht mal den asm-Code von getInstance?
-
operator void schrieb:
OpenGLDingens::getInstance() ist inline und steht im Header, oder? Wenn nicht, sollte es wohl dahin. Wenn ja, dann wundert es mich, dass es nicht geinlinet wird (wegen der static-Variable?).
es ist inline und die codes sind aus dem release.