Ist ein Code per DLL 'schneller' ?
Übersicht

PhillipKBetreff: Ist ein Code per DLL 'schneller' ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Heyho!
Mich plagt da mal wieder eine frage. Ich hatte überlegt, wenn ich eh schon Multithreading oder ähnliche performanceverteilung nutzen möchte, wieso dann nicht gleich teile als C++ Code bzw dll auslagern? Allerdings wäre das ein ziemliches gewurschtel, da ich grademal ein Konsolen-vier-gewinnt (mit Asciizeichen!! ![]() Allerdings hatte ich früher schonmal ein paar funktionen in eine DLL ausgelagert - unmöglich ist es also nicht. Nun ist die frage nach dem nutzen. Mir schweben funktionen wie Wegfindung oder auch PerlinNoise2d vor. Wenn ich an die A* geschichte denke, die Noobody unter die lupe genommen hat, kommt einem der verdacht das manch eine funktion als dll oder c++ code schneller sein könnte. Ist das ein regelfall? Lohnt es, Performancekritische funktionen auszulagern und fortan als dll anzusprechen? Ist es möglich, die selbe funktion in der selben dll aus 2 verschiedenen Threads aufzurufen und unabhängig zu bearbeiten? Mal schauen, was ihr dazu zu sagen habt ![]() Gruß, PhillipK |
||
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
DLLs gibt es nicht weil sie schneller sind, sondern weil man damit Platz sparen wollte, indem man einen Satz Funktionen,Klassen, was auch immer für alle Programme zur Verfügung stellt. Damit braucht man nicht in jedes Programm den Satz an Funktionen usw. selbst einbauen.
Das Einzige, dass vielleicht sein könnte, ist, dass C/C++ Programme, und dann eben auch vielleicht auch DLLs, im Vergleich zu BlitzMax Programmen schneller sind. Das könntest du halt entsprechend mit einem Test und Zeitmessung herausfinden, wozu du allerdings das was du brauchst erst einmal in C/C++ schreiben müsstest. |
||
Blessed is the mind too small for doubt |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
DaysShadow hat recht, den Unterschied gibt es, weil der C-Compiler manchmal/oft besser optimiert, als der BlitzMax-Compiler (merkt man gut bei der Implementierung von Metaballs).
Und wenn du mit BlitzMax arbeitest, musst du nicht einmal mit DLLs rumwurschteln, sondern kannst den C-Code direkt importieren: BlitzMax: [AUSKLAPPEN] Import "hilfsfunktionen.c" ' C Das ist dann sogar plattformunabhängig (sofern du in C/C++/Asm nur plattformübergreifende Bibliotheken verwendest). |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da C++ auch keinen Garbage Collector hat, gibt ihm das gegenüber BMax einen Geschwindigkeitsvorteil bei "number crunching" code (vor allem auch im Multithreaded-Bereich). Falls man also wirklich mit Performance-Problemen zu kämpfen hat, ist es manchmal gar keine so schlechte Idee, kritischen Code in C++ auszulagern.
BMax bietet ja sehr gute Bordmittel an, um mit C++ zu arbeiten; neben dem, was Thunder bereits erwähnte, man kann unter gewissen Voraussetzungen sogar C++-Klassen in BMax-Code wie Types behandeln und umgekehrt (einfach mal in der BMax-Hilfe unter Language Reference->Advanced Topics->Interfacing with C nachschauen). |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gut ![]() Das mit dem GC hattest du bereits bei der Wegfindung angesprochen, deswegen kam ich darauf. Mir gehts nicht darum, wirklich 100 FPS mehr zu erhalten - allerdings finde ich, grade was Multithreaded angeht - das vielleicht garkeine so schlechte idee. Allerdings wird das lange brauchen, bis ich da was brauchbares habe. Gelernt habe ich C++ nie wirklich, auch kein C und schon garnicht Asm. Rumprobiert ja, was hinbekommen, jein, was gekonnt - nein. Dennoch sollte das schon hinhaun - n bissl weiß ich ja, was bei C++ und konsorten zu beachten ist *g* Bei dem direkten einbinden von C/C++ code war ich mir nicht sicher. Ich hatte angst, das auch dort der GC mitspielen könnte- landet schließlich alles am ende in der exe. Dh sobald ich meinen jetzigen part abgeschlossen habe, werde ich mal versuchen, ein bisschen testcode 1zu1 zu übertragen und einen speedtest anzuzetteln. ![]() Danke für die hinweise ^^ |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group