Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

08.03.2011, 10:23

Nein, es ist genau anders herum. Du erzählst hier über Dinge, die für das Problem nicht relevant sind.
Anschauen brauche ich mir Deine Beispiele auch nicht, da sie mit dem eigentlichen Thema nichts zu tun haben und Du von einer fehlerhaften Annahme ausgehst, nämlich dass die Art des Zugriffs und nicht die Komplexitätsklasse des Problems und des lösenden Algorithmus relevant ist. Und das ist schlicht falsch.
Es ist sehr wohl relevant, ob man Kollisions- und Culling-Tests in O(log n), in O(n) oder gar O(n²) durchführt. Das hat mit OOP oder Zugriffsart rein gar nichts zu tun.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

12

08.03.2011, 10:51

[...]nämlich dass die Art des Zugriffs und nicht die Komplexitätsklasse des Problems und des lösenden Algorithmus relevant ist. Und das ist schlicht falsch.


QFT

@buggy:
Du redest hier von vollkommen anderen Dingen.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

13

08.03.2011, 12:23

Ich bin hier der Meinung von BlueCobold. Im grossen kommt es extrem auf den eigentlichen Algorithmus und dessen Komlexitätsklasse an. Erst wenn man da etwas gutes hat sollte man sich auf die Ebene tiefer gehen und sich mit Feinheiten von Prozessoren beschäftigen.
Dann ist das aber auch sehr sinnvoll, wenn man auf Caching, Abhängigkeiten usw. achtet. Da kann man dann schon auch noch einiges heraus holen. Das ist aber kein Ersatz für einen Algorithmus mit guter Laufzeit. Das ist ja genau der Punkt dieser Klassifikationen.

Und @buggypixel:
Bitte achte ein wenig auf den Ton. Du legst schon eine gewisse Art von Arroganz hin. Wenn du diskutieren willst, dann kannst du das hier gerne tun, auch wenn du komplett anderer Meinung bist, wie alle anderen, aber dann wollen wir auch Punkte und Argumente hören, die von dir kommen und warum du dieser Meinung bist. Es kann durchaus sein, dass wir aneinander vorbeireden oder etwas übersehen, dann wollen wir das aber auch wissen und ev. dazulernen.

Und jetzt erlaube ich mir auch noch ein wenig Arroganz: Glaubst du wirklich, dass Leute, die etliche Hochschulkursen in Systemnaher Programmierung, Datenstrukturen, Algorithmen, Numerischen Methoden usw. besucht haben nicht wissen, wie solche Dinge ablaufen? - Dein erster Post spricht schon dafür, dass du das nicht hattest, denn das ist etwas vom ersten, was man lernt in Zusammenhang mit effizienten Algorithmen, dass es eben in erster Linie nicht so drauf ankommt, wie das effektiv implementiert ist, sondern den Algorithmus/Verfahren, die man verwendet.

buggypixels

Treue Seele

Beiträge: 125

Wohnort: Meerbusch

Beruf: Programmierer

  • Private Nachricht senden

14

08.03.2011, 12:45

Auch ich habe mal vor vielen, vielen Jahren an der Uni Vorlesungen gehört. Habe nur darauf gewartet, dass der erste sich meldet und damit anfängt. Ich arbeite halt nur seit über 15 Jahren als Programmierer und wollte eher Tips geben. In der Praxis erlebt man es halt sehr häufig, dass Leute von der Uni kommen und meinen sie wissen jetzt alles. Dann fallen sie auf die Nase und man hilft ihnen. Dann lernen sie, dass es noch mehr gibt, als die Professoren einem beibringen.
Natürlich haben alle recht, dass ein sorgfältiger Algorithmus wichtig ist. Wenn es daran krankt, dann hilft die beste Optimierung nicht.
Und dass ich vielleicht arrogant klinge, dann liegt es wohl auch an dem Ton von BlueCobol. Der sich ja als stark beratungsresistent erwiesen hat. Aber sicherlich wird er auch noch gleich schreiben, dass er ja auch studiert und schon seit vielen Jahren äußerst erfolgreich im Beruf ist.
Aber wartet nicht mehr auf eine Antwort. Ich finde das äußerst langweilig mit Euch hier und wechsele dann doch wieder zu Foren, wo man auch mal was diskutieren kann.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

08.03.2011, 13:26

Ich denke es ist wohl offensichtlich dass es sich beim Fragesteller noch um einen Anfänger handelt der gerade mal seine ersten Schritte macht. Und er hat ja schon selbst eine gute und effiziente Lösung für sein Problem gefunden. Ich denke bevor er sich um sowas wie Data oriented Design Gedanken macht sollte er mal Erfahrung sammeln wie man ein Spiel überhaupt aufbaut. Außerdem bezweifle ich dass er mit seinen 20.000 Objekten irgendwo an Performancegrenzen stoßen wird die Überlegungen wie Cache Optimierungen, Multicore und so Zeug notwendig machen. Abgesehen davon sehe ich keinen Grund warum OOP und Data oriented Design sich gegenseitig ausschließen sollten. Meiner Erfahrung nach ist OOP eher für höhere Ebenen und DoD eher für Schichten weiter unten relevant. Imo ergänzen sich beide Paradigmen wunderbar...

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (08.03.2011, 13:50)


Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

16

08.03.2011, 13:33

Ich finde das äußerst langweilig mit Euch hier und wechsele dann doch wieder zu Foren, wo man auch mal was diskutieren kann.


Schlag bitte nochmal in einem Wörterbuch deiner Wahl das Wort "diskutieren" nach ;)
However, viel spaß in deinen anderen Foren beim "diskutieren"

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

17

08.03.2011, 13:47

Nochmal nachtreten macht die Sache auch so viel erwachsener..

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

08.03.2011, 14:28

Natürlich haben alle recht, dass ein sorgfältiger Algorithmus wichtig ist. Wenn es daran krankt, dann hilft die beste Optimierung nicht.
Dieser Satz ist widersprüchlich zum ersten Absatz Deines ersten Beitrags, in welchem Du OOP als Quelle aller Probleme ausmachst und nicht "Array vs. Quadtree".
Noch mal zur Erinnerung:

Zitat von »buggypixels«

Also wenn Du dir ernsthaft Sorgen über die Performance machst, dann ist die Frage eher zweitrangig. Da Du oft das Wort Objekt verwendest, fürchte ich, dass Du damit Klassen meinst. Eventuell sogar noch eine gewisse Hierarchie von Klassen. Das tötet Deine Performance. Nicht das Thema Array oder Quadtree.


Und dass ich vielleicht arrogant klinge, dann liegt es wohl auch an dem Ton von BlueCobol. Der sich ja als stark beratungsresistent erwiesen hat. Aber sicherlich wird er auch noch gleich schreiben, dass er ja auch studiert und schon seit vielen Jahren äußerst erfolgreich im Beruf ist.
Kann ich gern schreiben, klar. Denn auch im Beruf sind Algorithmen mit besseren Komplexitätsklassen immer vorrangig vor der Verteufelung eines ganzen Programmier-Paradigmas. Habe ich schon Dutzend mal gesehen und hat sich auch ein Dutzend mal bestätigt. Erst dann, wenn ein guter Algorithmus nichts mehr hilft, dann sollte man drüber nachdenken, ob man irgendwie optimalere Datenstrukturen verwenden kann. Allerdings sollte man dabei immer im Hinterkopf haben, dass auch ein solcher Optimierung nicht den finalen Segen, wenn seine Komplexitätsklasse O(n²) lautet. Wenn man es andersrum angeht, dann klingt das sehr schnell nach Premature Optimization und damit ist niemandem geholfen.
Mein Name schreibt sich übrigens mit "d" am Ende. Danke.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

19

08.03.2011, 14:35

Ich sehe nicht dass buggypixels hier irgendwo gesagt hätte dass die Laufzeitkomplexität der verwendeten Algorithmen zweitrangig wäre, ich frag mich ehrlich wie ihr auf das kommt und warum ihr euch so darauf versteift. Allerdings finde ich auch wie bereits oben gesagt keinen Grund warum OOP grundsätzlich zu unperformantem Code führen sollte.

Ich find die ganze Diskussion hier irgendwie ziemlich überflüssig...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

20

08.03.2011, 14:37

Du wirst mir doch aber wohl zustimmen, dass ein simpler Array und ein Quadtree nicht die gleiche Komplexitätsklasse verwenden, wenn es um die Bestimmung der Objekte geht, welche sich innerhalb oder außerhalb des Bildschirms befinden.
Und genau diese Optimierung gibt er als "nicht das Thema" an und versteift sich statt dessen darauf, dass OOP die Quelle der Performance-Gründe sind.
Also ich sehe bei "Array vs. Quadtree" sehr wohl Komplexitätsklassen, worauf ich in meinem zweiten Post deutlich hinweise und was er mit völlig abwegigem Beispiel zu kontern versucht.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige