Wenn Boost.Signals zu langsam ist...

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Wenn Boost.Signals zu langsam ist...

Beitrag von Kerli » Mo Mai 11, 2009 11:45 pm

Für meine Spieleengine versuche ich natürlich auch meinen Code so schnell wie möglich zu schreiben, zumindest soweit es sinnvoll möglich ist und im Bereich des Lesbaren bleibt. Dabei bin ich auch auf einen Eintrag in einer Mailingliste gestoßen auf der die langsame Ausführungsgeschwindigkeit von Boost.Signals bemängelt wurde.

Das habe ich jetzt in einem Artikel auf meiner Homepage auch ausprobiert und bin mit meinem Testprogramm an ähnliche Ergebnisse gelangt. Was ich und andere auch daraus erkennen sollten, das Boost nicht immer die beste Lösung darstellt auch wenn sie sehr gute Bibliotheken sind.

Zwischenzeitlich habe ich überlegt mit einem Event/Signals and Slotssystem zu arbeiten, aber ich glaube ich werde jetzt aus Performancegrunden versuchen das so weit wie möglich einzuschränken. Weil wenn ich das zum Beispiel mit Boost.Signals machen würde und in jedem Frame 1.000 Slots jeweils 1.000 Mal aufrufen würde dann würde ich auf eine Framerate von nur knapp 30FPS kommen, und das ohne noch irgendwelche anderen Sachen zu berechnen. Mit meiner vorgestellten Alternative komme ich immerhin noch auf ca. 130 FPS, aber was auch noch zu wenig ist weshalb ich wohl andere Wege einschlagen werde :)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Wenn Boost.Signals zu langsam ist...

Beitrag von Xin » Di Mai 12, 2009 6:40 am

Kerli hat geschrieben:Mit meiner vorgestellten Alternative komme ich immerhin noch auf ca. 130 FPS, aber was auch noch zu wenig ist weshalb ich wohl andere Wege einschlagen werde :)
Bleibt Dir ansonsten keine Rechenzeit mehr? Wenn Du 130FPS mit Bild bekommst, dann reicht das imho vollkommen, die wenigsten CRTs bringen 130 Hz und TFTs sowieso nicht.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Wenn Boost.Signals zu langsam ist...

Beitrag von Kerli » Di Mai 12, 2009 9:35 am

Xin hat geschrieben:Bleibt Dir ansonsten keine Rechenzeit mehr? Wenn Du 130FPS mit Bild bekommst, dann reicht das imho vollkommen, die wenigsten CRTs bringen 130 Hz und TFTs sowieso nicht.
Das würde natürlich vollkommen reichen. Normalerweise sollten so max. 60 FPS genug sein, aber hier haben allein die Signale diese Zeit benötigt. Ich wollte damit nicht sagen das ich dieses Prinzip gar nicht verwenden werde, aber eben sparsamer als zwischenzeitlich geplant. Und irgendwie wird es doch etwas unübersichtlich bzw. schwerer zum Nachvollziehen wenn alles nur über Events bzw. Signals abläuft.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Wenn Boost.Signals zu langsam ist...

Beitrag von Xin » Di Mai 12, 2009 2:22 pm

Was ist denn eigentlich genau das Problem, dass Du so abbilden musst?
Ich meine - wer muss schon tausende Signale abschicken!?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Wenn Boost.Signals zu langsam ist...

Beitrag von Kerli » Di Mai 12, 2009 2:40 pm

Xin hat geschrieben:Was ist denn eigentlich genau das Problem, dass Du so abbilden musst?
Ich meine - wer muss schon tausende Signale abschicken!?
Das ist nicht Muss, aber es ist eine Variante auf die ich gestoßen bin. Für beinahe alles werden Events verschickt. Beim Rendern zb bekommt jedes Objekt eine Nachricht es soll sich Rendern, bei der Kollisionsabfrage schickt jedes Objekt eine Nachricht aus "Stoße ich mit dir zusammen?" oder wenn ein Objekt wissen will wo sich ein anders Objekt befindet dann schickt er diesem eine Nachricht "Wo bist du?" usw.

Und da kann es leicht auf tausende Signale kommen. Signale werde ich zwar trotzdem einsetzen, aber eben nicht so extrem...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Wenn Boost.Signals zu langsam ist...

Beitrag von Xin » Di Mai 12, 2009 7:22 pm

Kerli hat geschrieben:
Xin hat geschrieben:Was ist denn eigentlich genau das Problem, dass Du so abbilden musst?
Ich meine - wer muss schon tausende Signale abschicken!?
Das ist nicht Muss, aber es ist eine Variante auf die ich gestoßen bin. Für beinahe alles werden Events verschickt. Beim Rendern zb bekommt jedes Objekt eine Nachricht es soll sich Rendern, bei der Kollisionsabfrage schickt jedes Objekt eine Nachricht aus "Stoße ich mit dir zusammen?" oder wenn ein Objekt wissen will wo sich ein anders Objekt befindet dann schickt er diesem eine Nachricht "Wo bist du?" usw.
Das klingt nach sauberer OOP... aber nicht sinnvoll...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten