Frage zur Geschwindigkeit von Pointern
-
Freie, gute Profiler sind leider recht rahr.
Wenn du ne AMD CPU hast, dann ist der AMD Code Analyst recht gut. Der geht zwar auch mit Intel CPUs, aber dann nur mit 1ms Samples (was für meine Anwendungen meist viel zu wenig ist).Profilen solltest du allerdings immer auf der Zielplattform. Da ich mir grad nicht ganz vorstellen kann, dass du nen Software-Renderer für PCs schreibst, bräuchtest du also einen Profiler für ... was auch immer deine Zielplattform ist. (Lass mich raten... Nintendo DS? Playstation 3?)
-
hustbaer schrieb:
Profilen solltest du allerdings immer auf der Zielplattform.
Für wirklich spezifische Optimierungen schon. Oft kann es allerdings sein, dass man zuerst gröbere Flaschenhälse (z.B. durch falsche Datenstrukturen oder ineffiziente Algorithmen) aufdeckt, die sich auch portabel behandeln lassen.
-
@hustbaer: mir ist gar nicht bekannt, dass es Hobby-Programmierern überhaupt möglich ist, Programme für die PS3 zu entwickeln. Wenn das geht, sagt mir bitte wie
aber ob du es glaubst oder nicht, ich entwickel einen SoftwareRenderer für PCs (http://softpixelengine.sourceforge.net/GalleryImg30b.PNG)Ich habe einen "Intel Core 2 Duo" aber die MultiKernel CPUs helfen einem beim SoftwareRendering nicht sehr viel, höchsten in Verbindung mit MultiThreading.
Insgesammt denke ich, werde ich wohl doch einfach versuchen müssen, die Algorithmen zu verbessern.
-
LukasBanana schrieb:
Ich habe einen "Intel Core 2 Duo" aber die MultiKernel CPUs helfen einem beim SoftwareRendering nicht sehr viel, höchsten in Verbindung mit MultiThreading.
Das ist sehr weise. Ungefähr so als würde man sagen: Ein ComPuter hilft beim Rechnen nicht sehr viel, höchsten in VerBindung mit ElekTrizität.
-
Mit MultiThreading meinte ich Thread-Programmierung im eigenen Programm, nicht vom Betriebsystem aus

Aber ich seh' schon wo hin das fürt, also ist es glaube ich das Beste, dises Diskussion einfach zu beenden und zu vergessen

-
LukasBanana schrieb:
@hustbaer: mir ist gar nicht bekannt, dass es Hobby-Programmierern überhaupt möglich ist, Programme für die PS3 zu entwickeln.
Na ganz einfach mit Linux.
Der Grund warum ich auf die PS3 komme: der Hypervisor der PS3 lässt dich von Linux aus nicht auf den 3D Chip zugreifen. D.h. entweder nur 2D, oder Software-Rendering.aber ob du es glaubst oder nicht, ich entwickel einen SoftwareRenderer für PCs
Wozu?
Für wirklich spezifische Optimierungen schon. Oft kann es allerdings sein, dass man zuerst gröbere Flaschenhälse (z.B. durch falsche Datenstrukturen oder ineffiziente Algorithmen) aufdeckt, die sich auch portabel behandeln lassen.
Da hast du Recht, habe mich ungenau ausgedrückt. "Immer" ist falsch.
In diesem Fall wäre es unsinnig woanders zu profilen -- Performanze von Speicherzugriffen ist ja wohl sehr plattformabhängig. Da die Zielplattform allerdings doch ein PC ist, ist das ja jetzt egal.
-
LukasBanana schrieb:
Mit MultiThreading meinte ich Thread-Programmierung im eigenen Programm, nicht vom Betriebsystem aus

Aber ich seh' schon wo hin das fürt, also ist es glaube ich das Beste, dises Diskussion einfach zu beenden und zu vergessen

Nein. Er hat Recht.
Wenn du bei einem Software-Renderer nicht mehrere Threads (ja, in einem Programm) verwenden willst, wo dann???
Rendering von 3D-Szenen lässt sich *wunderbar* parallelisieren.
-
hustbaer schrieb:
...
Wenn du bei einem Software-Renderer nicht mehrere Threads (ja, in einem Programm) verwenden willst, wo dann???...Hi,
ich vermute, dass er hofft, dass das Betriebssystem oder irgendeine andere Instanz "automatisch" sein Programm "multithreaded".
Das ist auch gar nicht so weit hergeholt ... als ich mal vor Ewigkeiten einen Programmierkurs für "Vektorrechner" mitgemacht habe, spielte immer eine wesentliche Rolle, dass man sein Programm auf eine bestimmte Weise strukturieren musste. Nur dann war "die VAX" (ich vermute allerdings eher den Compiler) in der Lage, Berechnungen zu parallelisieren.Gruß,
Simon2.
-
Simon2 schrieb:
Nur dann war "die VAX" (ich vermute allerdings eher den Compiler) in der Lage, Berechnungen zu parallelisieren.
Die Frage ist dann aber eher war damit wirklich Multithreating gemeint oder (was ich eher glaube) SSE oder eine vergleichbare Technik, SSE ist ja heute serienmäßig bei AMDs und Intels drin.
-
Jo. Das nennt sich Vektorisierung und hat mit Threading im Prinzip nix zu tun.
-
Xebov schrieb:
Multithreating

-
hustbaer schrieb:
Jo. Das nennt sich Vektorisierung und hat mit Threading im Prinzip nix zu tun.
Wenn Ihr der Meinung seid, dass dieser Unterschied dem Fragesteller schon bewusst war und er garantiert das eine und nicht das Andere und schon gar nicht einfach nur "irgendeine Form beiläufiger Verarbeitung" gemeint hat, habe ich mich natürlich gräßlich geirrt und bitte vielmals um Verzeihung.

Gruß,
Simon2.
-
Wie kann er Vektorisierung gemeint haben (egal ob er das Prinzip/den Begriff kennt oder nicht), wenn er von "Core 2 Duo" und "MultiKernel CPUs" schreibt.
Vektorisieren kann man Code auch schon für die alten Single-Core CPUs mit MMX/SSE/SSE2/...
Das können auch einige Compiler, allerdings eher schlecht als recht.
Vernünftigerweise muss man es selbst machen, indem man die (hoffentlich vorhandenen) Compiler-Intrinsics verwendet. Aber ich schweife ab, das is wieder ein anderes Thema.
-
hustbaer schrieb:
Wie kann er Vektorisierung gemeint haben ...
Unterstell mir doch bitte nichts, was ich weder sagte noch meinte.
Das Beispiel mit der VAX habe ich lediglich gebracht als Beispiel dafür, dass man an einen Mechanismus denken kann, bei dem beiläufige Verarbeitung ohne eigenes Zutun des Programmierers zum Tragen kommen kann.Also habe ich weder behauptet, er würde auf einer VAX programmieren, noch an Vektorrechnung denken oder irgendetwas Anderes aus meinem Beispiel.
Ganz einfach: Ich vermute, dass der OP davon ausgeht, dass es "irgendeine" Form der Beiläufigkeit gibt, um die er sich nicht selbst kümmern muss.
Gruß,
Simon2.