Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mär 28, 2024 23:03

Foren-Übersicht » Sonstiges » Community-Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 87 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5, 6  Nächste
Autor Nachricht
BeitragVerfasst: So Apr 25, 2010 20:13 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Zusammenfassung des Chats zum DGL Benchmark.

Definitionen:
DGL Benchmark / Framework---> Ein Framework welches Messungen macht.
Benchmark -----------------------> Ein Test der ein Bestimmtes Thema behandelt und im Framework ausgeführt wird.
BM Implementationsvariante ---> Jeder Benchmark kann mehrere BM-ImplVarianten besitzen die miteinander Verglichen werden.

Ziele des Benchmarks
Allgemein: Jedem interessierten soll es möglichst einfach gemacht werden eigene Benchmarks zu schreiben.
Allgemein: Der Benchmark soll Messwerte in einem einheitlichen Format loggen, damit diese als Datenbasis für statistische Auswertungen dienen können.
Flash: Der DGLBenchmark soll Aussagen über die Performance verschiedener Implementationen machen ("Wenn du das so schreibst läuft dein Code schneller als wenn du das so macht.")
Sascha: Der DGLBenchmark soll Aussagen über die Performance von verschiedener Hardware bezüglich OpenGL machen ("ATI 8xxx führt den XYZ Shader 10% schneller aus als ATI 7xxx Karten")
Sascha: Der DGLBenchmark soll mehrere Arten von Messungen erlauben, nicht nur FPS bzw. Zeit sondern auch Füllrate etc.

Umsetzung
Flash hat eine sehr breite Spezifikation geschrieben welche es erlauben soll verschiedene DGLBenchmarks-Referenzimplementierungen zu schreiben. (Es gäbe dann einen DGLBenchmark in Java, einen in FPascal, einen in C++ etc.)
Lars Mittendorf hatte vor einigen Jahren bereits eine Implementation geliefert, welche in Delphi geschrieben war und mit einigen Anpassungen als Implementation der Spezifikation gelten kann. Da Delphi, ist der Code erstmal Windowsonly.

Es wurde dann darüber diskutiert, ob man nicht eine Framework-Implementierung nimmt und dafür sorgt, dass sie Benchmarks unabhängig von deren Sprache ausführen kann (also DLLs/SOs genauso wie JARs).

Um sich zu entscheiden auf welcher Basis man das Framework schreibt wurden PROs und CONs gesammelt.

Code:
JAVA-Framework

+ Es gibt nur einen Code/Version die man verteilen muss
+ Das Framework existiert bereits
+ DLLs können (mit etwas Aufwand -> JNI, JNA) aufgerufen werden

- Java gilt als Langsam und man wird sagen, dass die Messung verfälscht wird
- Java benötigt eine VM die installiert werden muss.
- Aktuelle GL-Versionen könnten nicht verfügbar sein.
- Der GC muss als Problem noch ausgeschlossen werden
(- JNI muss genutzt werden)


DELPHI-Framework

+ Neue GL Versionen können dank DGLOpenGL.pas genutzt werden
+ Es existiert bereits
+ Nativer Code

+- Es hat eine GUI

- Es muss auf Lazerus portiert werden um plattformunabhängig zu sein.
- Das FWK muss noch an die Spec angepasst werden.
- Für jede Plattform brauch man ein extra Compilat
- Es ist noch unklar wie man JARs im Context des FWKs laden/ausführen kann


FREEPASCAL-Framework (von Lord Horazont)

+ Existiert
+ hält sich mehr an die Spec als die alte Delphi Variante
+ Nativer Code
+ Neue GL Versionen können verwendet werden.

- Muss noch vervollständigt werden.
- Für jede Plattform brauch man ein extra Compilat
- Es ist noch unklar wie man JARs im Context des FWKs laden/ausführen kann


Es soll eine Abstimmung gemacht werden die klärt welches FWK genutzt werden sollte.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 25, 2010 20:35 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nachdem im Chat die Diskussion weiter ging und überzeugend dargelegt wurde, dass

1. Der Aufruf von DLLs aus Java heraus mit JNA sehr einfach ist
2. Performance von Java im Fwk kein Thema ist (die DLLs die gerufen werden sind hingegen Zeitkritisch und sind dann in native code)
3. Es den beteiligten hauptsächlich darum geht, dass jeder seinen Code beisteuern kann und
4. 14MB Dowload für eine VM heutzutage kein echter hinderungsgrund sind

wird Frase den Benchark von Flash so erweitern, dass man DLLs im Spec-Format laden kann.

Ein Delphi/C++ - Coder sollte dann einmal eine DLL zur Verfügung stellen um dies zu testen.

Was noch offen ist: Wie erweitert man die Spec so, dass man andere Benchmarks (wie von Sascha angemerkt) durchführen kann. Stichwort: Parameterisierung des Fwks.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 25, 2010 21:44 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1944
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Flash hat's ja schon so schön gesagt. Hab's auch fertig :) (Naja fast, details am Ende vom Post).

Zu finden ist's hier: http://wiki.delphigl.com/index.php/Disk ... _Benchmark

Das zeigt oben das prinzipielle C-Interface, wie ich's mir vorstelle (Heißt also auch: Delphi, FreePascal, C++) und drunter der entsprechende Code auf Java-Seite. Flash's Java-Code hab ich mir noch gar nicht angeguckt und folglich auch nicht erweitert - das von mir fabrizierte Java-Schnippsel sollte sich da jedoch recht leicht einbauen lassen ;)

Kleine Info noch: Was imho noch fehlt für das C-Interface sind Return codes wie bei OpenGL. Man sollte nach jedem Funktionsaufruf mit sowas wie "getErrorString()" fragen, ob ein Fehler aufgetreten ist (So ähnlich wie OpenGL das macht). C hat ja leider keine Exceptions, also bleibt einem nichts anderes übrig als so den Fehlerfall abzuprüfen. Das sollte aber keine große Überraschung sein und daher hab ich's erstmal nicht mit ins Interface aufgenommen.

Grüße,
~ Frase

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 26, 2010 08:38 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Naja selbst wenn du C++ nimmst, wo exceptions da(noch, denn das wird mit c++ ISO2011 bzw. ISO2012 wird exception obsolet aufgrund von vielen Problemen die exceptions mit sich bringen) sind wäre es kein gute Idee, da fraglich ist, ob java das abfangen könnte.
FehlerCodes wären wirklich schick und könnten dann in den Specs Prima erweitert werden.

Frase, kannst du noch eines der vielen binaries suchen, die die vm sucht und eventuell nachlädt(windows).
Damit auch ein Dau unter den windows User es laufen lassen kann.
Auf MacOSX ist Java vorhanden und auf den mehr verbreiteten Linux Distro's auch.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 26, 2010 09:44 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Java ist immer in den Repos, aber nicht immer installiert (bei Ubuntu z.B. nicht). Und die 14MB halte ich für ein Gerücht, bei mir schlägt Java mit ca. 100 MB zu Buche (was mir aber egal ist, ich brauche es auch aus anderen Gründen).

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 26, 2010 10:43 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
100MB sind der JDK. Als User braucht man aber nur die JRE, und die ist kleiner.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 26, 2010 10:54 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Was uns zu der Frage bringt, warum ich das JDK installiert habe. :lol: Aber danke für die Information. >.<

Edit: Hm, bei mir ist das OpenJDK-JRE (Hat das JDK ein eigenes JRE oder ist es nur eine (wie ich vermute) verwirrende Bezeichnung?) Wirklich alles in allem >80MB groß: Bild

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 26, 2010 12:41 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Bei Fedora 12 das gleiche.
Ich hab noch daneben das normale JRE von sun, welches 50MB groß ist.


Dateianhänge:
Bildschirmfoto-Software hinzufügen-entfernen.png [74.46 KiB]
Noch nie heruntergeladen

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004
Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 26, 2010 14:18 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Jeder JDK bringt natürlich auch eine JRE mit, sonst könnten die Entwickler ja die gerade Entwickelte SW nicht ausprobieren.

Hier gibts die 15MB Runtime von Sun: http://java.com/de/download/manual.jsp

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 26, 2010 15:01 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Flash hat geschrieben:
Jeder JDK bringt natürlich auch eine JRE mit, sonst könnten die Entwickler ja die gerade Entwickelte SW nicht ausprobieren.
Hier gibts die 15MB Runtime von Sun: http://java.com/de/download/manual.jsp

Gut, dann kannst du mir bestimmt auch erklären, was das "openjdk-6-jdk" sein soll, wenn beim "openjdk-6-jre" das jdk schon dabei ist...
Außerdem reden wir bei den Begrifflichtkeiten aneinander vorbei.
Du redest von Downloadgrößen - ich vom Platzverbrauch am Ende.
Wobei selbst die Downloadgröße zwischen 14 und 25 MB schwankt.

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 26, 2010 17:25 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1944
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Ahoi,

wie die Java-Umgebungen (Sei es JDK, JRE oder sonstwas) gepackt und verteilt werden ist bei Linux erstmal Sache der Distributionen. Da viele Distributionen freie Software gegenüber proprietär angehauchter bevorzugen, findet sich bei Linux meist das OpenJDK in den Repositories. Man muss dazu wissen, dass das OpenJDK quasi identisch zum JDK von Sun ist (ist ja auch aus dem Sun JDK hervorgegangen) - ein paar kleinere Unterschiede gibt es jedoch. Die sollten im Normalfall aber nicht auffallen und sind mehr für den Entwickler interessant.
Mit Java 7 wird es dann keine Unterscheidung zwischen dem Sun JDK und dem OpenJDK mehr geben - bis dahin sollen beide komplett verheiratet sein und es soll nur noch das OpenJDK geben.

Manche Distributoren unterscheiden zudem nicht großartig zwischen JDK und JRE, also zwischen dem Development Kit und dem Runtime-Environment, da das JDK auch eine eigene, vom JDK unabhängige Runtime mitbringt (Die ist optional. Das Sun JDK lässt sich auch ohne mitgelieferte JRE installieren). Mit einem einzigen java-package hat man also sowohl die JDK als auch die JRE abgehandelt. Das ziehen einige Distributionen verschiedenen Packages vor.

Was die reine Sun JRE angeht: Die ist durchaus in der Lage, in relativ kleinem Umfang installiert zu werden und sich bei Bedarf den Rest aus dem Internet nachzuladen (Nicht zu verwechseln mit Online-Installern).

Um den Aufwand möglichst gering zu halten, würde ich lediglich eine Version vom Benchmark anbieten. Dabei wird der Java-Teil durch einen Wrapper gekapselt, der sich auch noch selbstständig um die Runtime kümmert.
Aufgrund der schieren Zahl an Wrappern ist man da prinzipiell recht flexibel, wie genau dieses "Kümmern" aussehen soll. Die Runtime kann von vornherein mit beim Benchmark dabei sein, der Wrapper kann sie selbstständig herunterladen und zum Benchmark stecken, er kann dem User einen Hinweis anzeigen, dass die Runtime fehlt und er kann den Browser öffnen und den User zur Seite von Sun führen, wo er die Runtime herunterladen kann.
So ein Wrapper hat auch den angenehmen Nebeneffekt, dass der benchmark im Task Manager nicht als "java.exe" auftaucht, sondern z.B. als "dglbenchmark.exe".
Parallel dazu kann man sich noch Gedanken machen, ob man den Benchmark über Java WebStart anbieten soll, sodass man ihn ohne gesonderte Installation direkt aus dem Browser heraus starten kann. Das ist aber eindeutig noch Zukunftsmusik, bis dahin ist so schon genug zu tun.

Man darf aber nicht aus den Augen verlieren, dass die eigentliche Zielgruppe andere Programmierer sind und die werden in der Regel wissen, was die Java Runtime ist und wie die sich installieren lässt. Das ist mit ein Grund, warum ich lediglich eine Version vom Benchmark anbieten würde.

Mindestens einer dieser Wrapper kann offenbar auch für Linux solche native Wrapper erzeugen: http://launch4j.sourceforge.net/

Just my six cents
~ Frase

P.S.: Möchte nur mal Flashs Aussage korrigieren: Ich hab nur mal stell das Interface gebaut, wie man einen Benchmark aus Java heraus ansprechen könnte. Für die komplette Integration von dem Spaß in Flashs bestehendes Framework hab ich mich nicht bereit erklärt ;)
Ich hab selber auch nicht unbegrenzt Zeit. Ich geb' gerne meinen Rat, wie man da was konzeptionell umsetzen kann mit möglichst wenig Aufwand und pack auch gar mal bei kleineren Baustellen an (wie z.B. hier bei dem Interface), aber ich werd sicher aktuell nichts größeres am Benchmark machen. Das gibt meine Zeit einfach nicht her.

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Apr 27, 2010 15:57 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Frase hat geschrieben:
Was die reine Sun JRE angeht: Die ist durchaus in der Lage, in relativ kleinem Umfang installiert zu werden und sich bei Bedarf den Rest aus dem Internet nachzuladen

Und genau die könnte man bei der Java Version des Benchmarks ideal nutzen. Die Minimum Version ist IIRC <=5MB! Dazu kommt noch das jeweilige Binding und man ist vllt. bei 10MB. AWT/SWT, etc wird doch nicht benötigt.

BTW: Die Namenskonvention bei den Funktionen empfinde ich als störend. Wieso muss man innerhalb des Benchmarks seine Benchmarkfunktionen mit dem Namen des Benchmarks benennen?

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Apr 27, 2010 20:16 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1944
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Evil-Devil hat geschrieben:
BTW: Die Namenskonvention bei den Funktionen empfinde ich als störend. Wieso muss man innerhalb des Benchmarks seine Benchmarkfunktionen mit dem Namen des Benchmarks benennen?

Ist immer noch besser als das, was Flash vorgeschlagen hat. Das hätte nämlich Reflection gebraucht :)
Flash will, soweit ich das verstanden habe, Unter-Benchmarks in den Benchmarks. Und dafür ist dieser Benchmark-Name Parameter. Find das auch suboptimal.

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Apr 27, 2010 21:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Hmm, will mir zwar nicht in den Schädel, aber alle Sprachen die wir hier verwenden unterstützen doch Interfaces bzw. Mehrfachvererbung.

Da sind Konstrukte aus:
setupBenchmark_BENCHMARKNAME
benchmark_BENCHMARKNAME
total irrsinnig.

Mir wäre eine Klasse/Interface das die Benchmark Funktionen definiert weitaus lieber. Und im Falle von Java kommt man an die geladene Benchmark Klasse notfalls auch über den Classloader heran.

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Apr 27, 2010 21:45 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1944
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
öh kann es sein, dass du von was leicht anderem redest als ich? ^^

Flash sah das so vor, dass man den methoden-namen erst zusammenbasteln muss (Wie du im letzten Post richtig angemerkt hast).
Ich würde aber (wenn man unbedingt diese Sub-Benchmarks haben möchte), deren Namen nicht an die Methoden-Namen dranhängen, sondern über einen Parameter reingeben. So hab ich das auch auf der Diskussions-Seite vom Wiki gemacht.

~ Frase

P.S.: Am liebsten würd ich diese Sub-Benchmarks (Oder "verschiedene Implementationsvarianten", wie Flash sie nennt) ganz rauswerfen. Ich prophezeie euch: Es wird eh meistens nur eine Implementierung geben, maximal vielleicht zwei. Dafür lohnt dieses Extra Kuddelmuddel imho nicht.

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 87 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5, 6  Nächste
Foren-Übersicht » Sonstiges » Community-Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.114s | 18 Queries | GZIP : On ]