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

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

11

13.08.2012, 17:47

6 Stunden und 35% soll fürs Sortieren drauf gehen? Das macht also ungefährt 2 Stunden sortieren für 50.000 Datensätze. Stimmen diese Fakten denn alle? Falls ja, um was für Datensätze handelt es sich da? Wie speicherst und manipulierst du diese? Weil irgendwie passt das alles für mich nicht zusammen.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

12

14.08.2012, 00:03

hi ich hab das mit quicksort mal ausprobiert und hat wunderbar geklappt die beschleunigung spüt man deutlich.

@drakon ja das mit den algorithmen grundlagen stimmt .. ich hab bis jetzt noch nie eine info stunde gehabt und hab mir das programmieren nach und nach selber beigebracht. Daher kannte ich die hintergründe nicht, aber jetzt weiss ich da auch schon wieder mehr..

@nox da steckt natürlich mehr dahinter als nur die einfache sortier funktion die ich gepostet hab, allerdings war das mehr oder weniger das kernproblem und ich wollte keine 100 zeilen code posten und anderen meine denkarbeit aufhalsen...

13

14.08.2012, 00:31

Eine kurze google suche hat mir gesagt das das quicksort eine nicht stabiler Sortieralgorithmus ist.. ist das oft der fall? es wäre ärgerlich nach 6 stunden rechenzeit festzustellen das das ergebnis nicht konvergiert.. hast du noch weitere tips für Sortieralgorithmen?

Hihi, das ist amüsant. In Anbetracht des fehlenden Hintergrundwissens ist die Schlussfolgerung zwar logisch (genau deshalb solltest du dich jetzt auch nicht angegriffen fühlen), aber hat man dieses, klingt der Satz einfach herrlich albern :)

das programm generiert mir daten aus nem riesen datensatz die ganze prozedur dauert über 6 stunden und wie vorhin schon erwähnt werden 35% bei dem sortieren verschwendet daher war das mein erster ansatzpunkt.

Darf man fragen, was genau du machst? Das klingt so gar nicht nach ersten Hobbyprogrammierversuchen, aber Daten sortieren und Standardfunktionen benutzen ist etwas, dass man in der Regel recht früh lernt. Wenn du also eine einem scheinbar ernsten Projekt arbeitest, wieso bist du dann für die Programmierung verantwortlich? Die Hintergründe würden mich da echt interessieren, da ich mir da noch kein so wirklich stimmiges Bild von machen kann.

Oh, und ich kann mir gerade gut vorstellen, dass man im Rest des Programmes auch noch so einiges verbessern könnte. 50.000 Daten verarbeiten ohne sich über Laufzeitkomplexität Gedanken zu machen kann eigentlich nur ineffizient werden.

@David: Die Zensur für falsch geschriebene Wörter ist ansich eine prima Idee, aber wenn Fehler in Zitaten beheben muss, um Posten zu dürfen, naja. Widerspricht irgendwie dem Geist des Zitierens.
Lieber dumm fragen, als dumm bleiben!

14

14.08.2012, 00:56

ich arbeite an dem projekt weils mein projekt ist ^^.. ich schreibe ein paar simulationen cfd, heat flux usw.. wie schon erwähnt ich hab bzw. nutze das programmieren als wekrzeug und mittel zum zweck und nicht als kunst für sich. Bisher hat es mit dem sortieren gereicht wenn ich meine standard methode verwendet habe. Ich kann verstehen das sich hardcore informatiker und selbsternannte checker darüber mokieren aber solange der code funktioniert und meine ergebnisse konvergieren ist für mich alles im grünen bereich.

da mir der code zu langsam war hab ich mich eben auf die suche nach neuem gemacht und bin hier auf das forum gestoßen und hab von ein paar netten mitgliedern kompetente ratschläge bekommen ohne verarscht zu werden ^^

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Planck« (14.08.2012, 01:04)


drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

15

14.08.2012, 01:09

nutze das programmieren als wekrzeug und mittel zum zweck und nicht als kunst für sich.

Du solltest aber lernen wie man mit dem Werkzeug richtig umgeht und das tust du im Moment schlichtweg noch nicht. Vor allem in deinem Fall solltest du so viel Code von Bibliotheken nutzen, wie möglich und nicht selbst probieren etwas zu basteln. Auf lange Sicht wirst du merken, dass das nicht nur jetzt im Moment eine gute Idee ist, sondern den Code auch einiges robuster, wartbarer, besser verständlich, einfacher zu ändern etc., etc. macht.

Du machst den Leuten, die dann deinen Code ev. irgendwann mal anschauen auch keinen gefallen. Wir hatten mal in einem Kurs über numerische Methoden für partielle Differentialgleichungen auch ein Framework bekommen, dass in etwa nach deinem Motto aufgebaut war. Das war extrem schrecklich damit zu arbeiten.

Und btw. Programmieren hat hier drin wohl so ziemlich jeder Autodidaktisch gelernt. ;)

Noch etwas: Zeig den Code mal. Ich habe das dumpfe Gefühl, dass du etwas ganz anderes noch hast, was dich so enorm abbremst. Wir können dann auch gleich noch weitere Tipps geben.

16

14.08.2012, 09:58

Der rest läuft soweit ganz gut. Sind paar nichtlineare solver und hier und da ein paar integrale usw. das is alles kein problem auch von der performance her ... ich hätte noch ein paar andere projekte die ich optimieren muss :D aber ich will die hilfe nicht überbeanspruchen ^^

edit: es hieß "sowas lernt man in der grundvorlesung" und du schreibst auch das du nen kurs über numerische methoden hattest daher bin ich davon ausgegangen das die meisten hier wohl eher was sehr informatik nahes studieren^^ viell beleg ich wenn ich mal zeit hab auch paar vorlesungen

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

17

14.08.2012, 10:29

@David: Die Zensur für falsch geschriebene Wörter ist ansich eine prima Idee, aber wenn Fehler in Zitaten beheben muss, um Posten zu dürfen, naja. Widerspricht irgendwie dem Geist des Zitierens.

Das passiert aber immer nur einmal, nämlich wenn ich wieder ein neues "Wort" hinzufüge ;)

@Planck: Es heißt Algorithmus.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

18

14.08.2012, 10:48

Ich vermute mal, dass du für den Wärmefluss/diffusion einen FE Ansatz gewählt hast, richtig? Wenn ja wieviele Elemente simulierst du denn? Außerdem handelt es sich dabei ja um ein recht bekanntes Problem zu dem man viele Vorlesungen etc findet. u.A. gibt es ja die Möglichkeit, das ganze zu linearisieren, wenn ich recht erinnere und zum Thema CFG kann dir ggf Xardias weiterhelfen, weil der glaube ich mal die Umströmung einer Mikropumpe simulieren durfte und da mit CUDA oder OpenCL gute Erfahrungen machte.

Natürlich spricht nichts dagegen, alles selbst zu machen, wenn es nur um den Lerneffekt geht, aber gerade wenn du stabile und wissenschaftlich belastbare Ergebnisse brauchen solltest, dann sollte man wenn möglich auf bewährte Ansätze und Lösungen zurückgeifen.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

19

14.08.2012, 11:10

Bisher hat es mit dem sortieren gereicht wenn ich meine standard methode verwendet habe. Ich kann verstehen das sich hardcore informatiker und selbsternannte checker darüber mokieren aber solange der code funktioniert und meine ergebnisse konvergieren ist für mich alles im grünen bereich.

Ja es ist nur so dass Komplexitätstheorie eigentlich ziemlich elemtar ist, sobald man größere Datenmengen verarbeiten will. Natürlich gibt es immer welche die (meinen das sie) mehr Ahnung haben und dann mit Inlineassembler und anderen komischen Tricks kommen um es schneller zu machen. Aber das hier ist echt etwas anderes.
Das soll natürlich keine Kritik an dir sein, man muss alles erst lernen, bevor man es kann. Stattdessen einfach 2 praktische Tipps:
1. Wenn es in der Standardbibliothek eine Lösung für dein Problem gibt, brauchst du gute Gründe, sie nicht zu benutzen. Boost ist auch immer eine gute Quelle für häufige Problemlösungen.
2. Mach dich ein wenig mit Laufzeitverhalten vertraut. Dieser Link sieht ok aus, gibt aber gewiss noch schönere.


Das passiert aber immer nur einmal, nämlich wenn ich wieder ein neues "Wort" hinzufüge ;)

Ja, das macht natürlich Sinn :D
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige