C++ NBody-Simulation in 4 verschiedene Programmierstile

Finalspace

Lt. Junior Grade
Registriert
Sep. 2009
Beiträge
366
Hallo,

ich habe ein kleines Experiment gebaut um herauszufinden, ob verschiedene Programmierstile große Auswirkung auf die Performance haben.

Das ganze ist daher eine in C++ implementierte 2D Flüssigkeitssimulation mit eingebauter Benchmark-Funktion.

4 Stile gibts - alle größtenteils Objektorientiert gehalten, mit Nutzung von Standardbibliotheken (STL, GLUT, GLEW).

Executable (nur X64):
http://root.xenorate.com/final/gamedev/nbodysimulation_experiment_v1.2.zip

Source:
https://github.com/f1nalspace/nbodysimulation_experiment

Allerdings ist die Benchmark-Funktion noch nicht ganz so ausgereift, ich feile da noch dran um nen brauchbares Ergebnis zu bekommen - habe dafür auch schon einen besseren Ansatz gefunden. Es wird daher recht schnell ein Update dafür kommen ;-)

Ihr könnts gern mal runterladen, ausprobieren, selber bauen, dran rumbasteln. Postet eure Ergebnisse, mich würd es interessieren ob es unterschiede bei CPU Architekturen gibt.

Feedback ist erwünscht!
 

Anhänge

  • nbody_shot2.png
    nbody_shot2.png
    40,1 KB · Aufrufe: 352
  • nbody_shot1.png
    nbody_shot1.png
    73,4 KB · Aufrufe: 341
Zuletzt bearbeitet:
Cool, Code läuft erstmal. Wie lange dauert so ein Benchmark ungefähr? Arbeiten fällt gerade etwas schwerer ;).

Ich weiß aber nicht, ob ich zeitnah in die Details reinschauen kann ...

Grüße,
T.
 
Nice.
Gibts ne Möglichkeit die Benchmarks für alle Scenarios automatisch durchlaufen zu lassen und dann zu vergleichen bzw. in Summe anzuzeigen? Außerdem wäre ein Textueller export wahrscheinlich sinnvoll.
 
Miuwa schrieb:
Nice.
Gibts ne Möglichkeit die Benchmarks für alle Scenarios automatisch durchlaufen zu lassen und dann zu vergleichen bzw. in Summe anzuzeigen? Außerdem wäre ein Textueller export wahrscheinlich sinnvoll.

Das mit den Scenarios durchlaufen ist ne gute Idee, allerdings muss ich mir dann überlegen wie ich den Chart dann aufbereite, evtl. dann eigenen Chart pro Scenario. -> Verdammt ich brauch nen UI :D

Zeit imGUI einzubauen.

Auch das mit dem Textexport ist ne gute Idee, CSV wäre hier vermutlich am geschicktesten.

Wie lange dauert so ein Benchmark ungefähr?

Nicht sehr lange, sind nur ein paar Frames * 10 Iterationen.
 
Ich hab nen heftiges Update reingehauen und das ganze Rendering auf nen CommandBuffer sowie STB_truetype umgebaut. War richtig viel Arbeit, aber das macht es jetzt viel flexibler - auch kann ich die gleiche Technik für zukünftige Projekte nutzen ;)

Dadurch ist das Text-Rendering jetzt ein wenig hübscher und die Text-Dimensionen stimmen endlich, auch kann ich jetzt beliebige Schriftgrößen benutzen.

Allerdings gibt es nen Bug in Verbindung mit OpenGL glDrawElements der nen Crash auslöst wenn die Texturekoordinaten mit glTexcoordPointer gesetzt wurden, daher ist der Bug per IFDEF deaktiviert und
stattdessen mach ich das glDrawElements selbst...
 
Zuletzt bearbeitet:
Ich habe die Anwendung nun von Glut auf meine eigene Platform-Abstraktions-Bibliothek FPL umgestellt.
Portierung war super einfach und war in 5 min erledigt. Selbst glew lies sich problemlos einbinden, allerdings musste glew als erstes include kommen, ansonsten gabs mecker.
 
Zurück
Oben