BlockBreakerBench | GrußThomasMark2012

Gruß Thomas!

Grand Admiral Special
Mitglied seit
27.03.2008
Beiträge
2.027
Renomée
118
Standort
Bayreuth
  • Docking@Home
Hallo allerseits.

Ich entwickel derzeit ein kleines Android Spiel und habe dafür auch einen LevelGenerator entwickelt. Als kleines Nebenprodukt (weil ich die Funktion des LevelGenerators testen wollte) ist ein kleiner Benchmark entstanden der meines Erachtens nach sogar Praxisrelevanz hat.

Mein Laptop mit einem E-350 braucht ca. 13.77sec bei 999999 Iterationen. Wie lange braucht ihr?

Download hier (Unter view Raw):

https://github.com/s4ke/BlockBreakerModelTest/blob/master/release/BlockBreakerBench.jar

Starten in der Konsole via:

java -jar BlockBreakerBench.jar
 
Zuletzt bearbeitet:
Phenom 955BE @3,2

9 - 0,013 s
99 - 0,024 s
999 - 0,075 s
9999 - 0,153 s
99999 - 0,588 s
999999 - 4,954 s
9999999 - 48,289 s
 
9999999 = 34,506 sec
99999999 = 344,936 sec
i7 920@3,5Ghz

Mach doch mal aus der Singlethreded eine Multithreaded Anwendung. ;)
 
Zuletzt bearbeitet:
So, mal was vergleichbares zu deinem E350:

K325 @1,3 GHz
99999 - 1,2629 s
999999 - 12,437 s
9999999 - 122,726 s
 
9999999 = 34,506 sec
99999999 = 344,936 sec
i7 920@3,5Ghz

Mach doch mal aus der Singlethreded eine Multithreaded Anwendung. ;)

Hmm das wäre mal ne Überlegung wert. Aber im Moment hat das eigentliche Projekt (das Spiel) vorrang.
.
EDIT :
.

Wupdidu. Jetzt kann er Multithreading. Und ich hatte noch einen Bug beim Benchen der dazu geführt hat das in jeder Iteration dasselbe ausgeführt wurde...

Aber es scheint nicht so gut zu funktionieren. Weil der Speedup irgendwie marginal ist.
 
Zuletzt bearbeitet:
9999999 = 32,208 sec
bei 8 Threads

Ich glaub das da noch einiges an Optimierung möglich währe.
 
Das komische ist ja, dass alle Cores trotzdem auf 100% laufen. Und der Grund warum das im Moment so langsam ist, ist meiner Meinung nach, dass ich alles mit synchronized mache...
.
EDIT :
.

9999999 = 32,208 sec
bei 8 Threads

Ich glaub das da noch einiges an Optimierung möglich währe.

Hast du auch den SingleThreaded neugemacht?
 
Hi, ich würde es ja gerne laufen lassen, allerdings kann mein System das nicht herunterladen.
Brauch ich da evt. ein key, wegen der Verschlüsselung?
 
Das komische ist ja, dass alle Cores trotzdem auf 100% laufen. Und der Grund warum das im Moment so langsam ist, ist meiner Meinung nach, dass ich alles mit synchronized mache...
.
EDIT :
.



Hast du auch den SingleThreaded neugemacht?
nee, noch nicht
aber jetzt: 9999999 = 47,575sec
 
Naja dann sieht man doch schonmal nen Unterschied. Jetzt hab ich nochmal dran rumgespielt, sollte wieder ein bischen mehr an Leistung bringen. Vielleicht kann ich den Speedup ja mal sinnvoll verbessern, mir fällt gerade bloß nix ein was ich noch ausprobieren könnte.
.
EDIT :
.

Hi, ich würde es ja gerne laufen lassen, allerdings kann mein System das nicht herunterladen.
Brauch ich da evt. ein key, wegen der Verschlüsselung?

Nein man braucht keinen Key. Einfach runterladen und in der Konsole starten.
 
Du hast den Speed eher nach unten korrigiert. Es sei denn das nun mehr Berechnungen angestellt werden.
9999999 = 47,575 sec bei Singlethread
9999999 = 156,503 sec bei Multithreaded
 
Ja das ist mir auch aufgefallen :P. Ich mach das wieder rückgängig. Aber erst nachher. Ich will außerdem wie gesagt nicht so viel Zeit für einen Benchmark verschwenden, den ich eigentlich nur als Nebenprodukt geschrieben habe.
 
Zuletzt bearbeitet:
Ich hab den Benchmark auf meinem Phenom II X3 720 BE@ X4 @3,3 Ghz laufen lassen.
Die Console spuckte folgendes aus:
Code:
H:\Neu 2012>java -jar BlockBreakerBench.jar
How many Iterations?
999999
How many Threads?
4
Starting Benchmark using BlockBreakerModel v0.1a...
Thread[Thread-0,5,main] finished.
Thread[Thread-1,5,main] finished.
Thread[Thread-2,5,main] finished.
Thread[Thread-3,5,main] finished.
Done.
Number of Failures: 1
The Benchmark took: 30.249sec.

H:\Neu 2012>
So ganz sauber läuft das aber nicht ...
 
Also das mit den Fehlern sollte normalerweise nicht passieren. Wenn ich das Singlethreaded bei mir mache, läuft eigentlich alles gut und ohne Fehler. Dasselbe gilt für 2 Threads. Zudem wird ja für jeden Benchmark der selbe Seed genommen...

EDIT: Okay. Scheint doch an ein paar Ecken noch etwas nicht ganz zu laufen. Muss mir das nochmal anschauen. Hatte gerade auch Fehler.
.
EDIT :
.

Ur-Level fehlerhaft
R B B B B B
R P P R R Y
R B G Y Y Y
R R P R Y Y
R Y B Y G Y
G G G G G Y

Fehler gefunden. Das ganze tritt nur auf, wenn versucht wird 5 mal 5 Blöcke zu verteilen und der Algorithmus einen Rahmen bildet wie oben. Dann findet er keinen Platz mehr für den 5ten 5er Block und hört auf mit dem Platzieren. Das heißt, ich brauche eine Fallunterscheidung hierfür.
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben Unten