Softwarerenderer in Java oder C++?



  • Ich möchte keinen Superrenderer schreiben das kann ich auch gar nicht. Wie ihr schon richtig vermutet habt will ich die Konzepte dahinter mal selbst verstanden und implementiert haben und habe mir dafür ca 1 Jahr Zeit gegeben. Ich möchte sowohl Echtzeit Rendering mit den üblichen Schattierungsalgos realisieren als auch einen kleinen Raytracer schreiben.

    Am liebsten würde ich das mal in beiden Sprachen machen um auch mal zu sehen was es für mich in der Praxis wirklich ausmacht. Meist wird ja zu dem Thema nur rumgetrollt. Ich will mir halt eine Pipeline konstruieren und wenn es geht in beiden Sprachen umsetzten.

    Zu beginn wollte ich aber noch mal die Einschätzungen aus einen Java-Forum und auch einem C++-Forum aufzeigen lassen. Ich habe nicht viel in Java bis jetzt gemacht aber wenn es tatsächlich nur einen kleinen Teil langsamer ist wäre ich echt begeistert. Ich dachte immer der Faktor liegt so bei 2-10fach langsamer als C++.



  • Hollibon schrieb:

    Ich möchte keinen Superrenderer schreiben das kann ich auch gar nicht. Wie ihr schon richtig vermutet habt will ich die Konzepte dahinter mal selbst verstanden und implementiert haben und habe mir dafür ca 1 Jahr Zeit gegeben. Ich möchte sowohl Echtzeit Rendering mit den üblichen Schattierungsalgos realisieren als auch einen kleinen Raytracer schreiben.

    Am liebsten würde ich das mal in beiden Sprachen machen um auch mal zu sehen was es für mich in der Praxis wirklich ausmacht. Meist wird ja zu dem Thema nur rumgetrollt. Ich will mir halt eine Pipeline konstruieren und wenn es geht in beiden Sprachen umsetzten.

    Zu beginn wollte ich aber noch mal die Einschätzungen aus einen Java-Forum und auch einem C++-Forum aufzeigen lassen. Ich habe nicht viel in Java bis jetzt gemacht aber wenn es tatsächlich nur einen kleinen Teil langsamer ist wäre ich echt begeistert. Ich dachte immer der Faktor liegt so bei 2-10fach langsamer als C++.

    2-10fach?? 😮 Hast du mal nachgedacht, was diese Aussage bedeutet?
    Zerbrich dir nicht den Kopf über die Sprache, das ist total nebensächlich. Konzentrier dich lieber auf die Algorithmen, die Mathematik etc. und nimm die Sprache, die du am besten kannst bzw. dir am meisten liegt.

    Nebenbei: Dürfen Unregistrierter jetzt wieder Freds in diesem Subforum eröffnen?



  • Java ist nicht großartig langsamer als C++. FFT in Java ist sogar schneller als es in reinem C möglich ist. Die neue Hotspot Technologie ist extrem effektiv geworden und nutzt immer den aktuell schnellsten Befehlssatz der CPU sowie Mehrkern und mit jedem Durchlauf einer Loop wird der Code meist noch besser optimiert, das bekommt kein C-Coder so schnell hin.



  • Break, jetzt geht es loss ... 😞


  • Mod

    Hollibon schrieb:

    ich habe vor einen Softwarerenderer zu schreiben und stehe vor der Wahl Java oder C++.

    normalerweise hat man eine problemstellung und waehlt anhand dessen das werkzeug und steht nicht vor zwei werkzeugen und hat einfach ne wahl.

    Was denkt ihr würde der Faktor sein der C++ schneller wäre?

    bei meinem test ca 10x, 50fps vs 500fps, wobei ich beides nicht ganz bis zum ende ausgereizt habe, hab eher nur simplen rasterizer code portiert weil ich wissen wollte, ob man damit ein webgame ala quake3a machen kann (ohne hardware beschleuniger auf atom-cpus).

    Wenn er nicht all zu groß ist würde ich mit Java anfangen da das Entwickeln doch etwas einfacher ist. Ich habe die Frage schon in einem Javaforum gestellt und dort wurde mir gesagt das es von der Geschwindigkeit keinen großen Unterschied gibt, wie seht ihr das?

    wenn du Java bevorzugst, dann nimm java. wenn du c++ nicht wirklich gut kannst, werden die antworten aus dem java forum mehr als zutreffen und dein c++ programm wird eher noch langsammer sein als assembler/c/c++...

    das siehst du auch in den ganzen vergleichen von den sprachen, die resultate spiegeln eher die faehigkeiten der programmierer wieder als die der sprache.
    drum, ran an die arbeit. und poste ruhig screenshots 😉



  • Hey super endlich mal einer der das ausprobiert hat. Woran liegt der heftige Unterschied, vielleicht daran dass in Java jeder Index auf ein Array auf Gültigkeit geprüft wird?


  • Mod

    wie weit bist du denn bisher?



  • Hiho,
    versteht mich nicht falsch, ich bin kein d/c++ - Fanatiker, tatsächlich benutze ich am liebsten c#, recht einfach und angemessen schnell.

    Ich weiß jetzt nicht in wie weit man jetzt c# mit Java vergleichen kann, doch sind das ja beide Sprachen gemanaged. Doch kam es durchaus schon vor, dass Sachen die bei c# 17-25 Sekunden gedauert hatten (mehrere Versuche), mit C++ selten die 4 Sekunden erreicht habe, durchschnittlich 3 Sekunden.

    Ist jetzt schon wirklich eine ganze Weile her, weiß nicht mal mehr genau was ich da gemacht habe, wenn ich mich nicht täusche Strukutren füllen und sortieren aber ka.

    Also ich bin C# fan, ist für die meisten Sachen auch mehr als schnell genug, doch das der Unterschied zwischen verwaltetem Kram und unverwaltetn kaum spürbar ist habe ich zu mindest noch nicht erlebt, auch wenn es so sein sollte (mache das aber auch nur Hobbymäßig)



  • Hier mal ein schönes Beispiel für einen Raytracer der nur 20% langsamer ist als eine C++ Version aber mit den vielen Vorteilen von Java daherkommt.

    http://strattonbrazil.blogspot.com/2008/11/sunflow-java-ray-tracer.html



  • Ich habe mich jetzt für Java entschieden da nicht jedes Frame für mich wichtig ist und Java nun einmal um einiges angenehmer zu programmieren ist.

    rapso: mehr als ein paar Privmitiven in einen Framebuffer zeichnen und den anzeigen habe ich in C++ noch nicht gemacht. Ich werde jetzt erst einmal etwas Java auffrischen und dann meine Klassen portieren. Ich bin sehr gespannt auf die JIT-Welt und kann dann hinterher wenigstens in beiden Welten mal etwas mitreden.


Anmelden zum Antworten