Lust auf einen kleinen Rechner-Test (Java)?



  • @robot: Hol Dir mal ein aktuelles JDK und vergleiche Deine Java 5 Ergebnisse damit. Die behaupten doch tatsächlich schon wieder, dass das aktuelle Java 6 teilweise schneller als Java 5 sein soll:

    http://java.sun.com/performance/reference/whitepapers/6_performance.html



  • Unglaublich. Die Ergebnisse von Java 1.6.0_03 im Vergleich zu Java 1.5.0 sind tatsächlich deutlich besser:

    Auf Intel Pentium M 1500 MHz

    Sum32 Test...                    73% schneller
    Sum64 Test...                    26% schneller
    Sum64 Test using 10 Threads...   37% schneller
    Sum64 Double Test...             54% schneller
    RAM Test...                      6% schneller
    Prim Test (SOE)...               24% schneller
    


  • robot schrieb:

    Das mit dem 0 ms ist mir unter Java auch noch nicht passiert. Ich vermute, dass die aktuelle Version von javac das kaputt optimiert, weil er merkt, dass das Ergebnis (sum) nicht weiter verwertet wird. Dass er so schlau ist und die Summenformel sum = (max+1)*max/2 anwendet kann ich mir noch nicht vorstellen.

    Ich hab das Ergebnis mal einer Membervariablen zugewiesen, so dass er eigentlich zum Ausführen der Schleife gezwungen sein müsste. Kannst Dus evtl. nochmal testen? (siehe erstes Posting)

    21:16:33 mastercpp@chi ~ % javac -O JBench.java              
    21:17:37 mastercpp@chi ~ % java JBench                       
    JBench V 0.022       Test loops: 1
    Sum32 Test...                    best time: 1207 ms
    Sum64 Test...                    best time: 3063 ms
    Sum64 Test using 10 Threads...   best time: 1918 ms
    Sum64 Double Test...             best time: 7770 ms
    RAM Test...                      best time: 1946 ms
    Prim Test (SOE)...               best time: 4942 ms
    
    21:18:08 mastercpp@chi ~ % gcj -O3 --main=JBench JBench.java 
    21:19:46 mastercpp@chi ~ % ./a.out                             
    JBench V 0.022       Test loops: 1
    Sum32 Test...                    best time: 1905 ms
    Sum64 Test...                    best time: 0 ms
    Sum64 Test using 10 Threads...   best time: 865 ms
    Sum64 Double Test...             best time: 2615 ms
    RAM Test...                      best time: 2082 ms
    Prim Test (SOE)...               best time: 6099 ms
    

    Threading und das Rechnen mit Doubles scheint in der VM nicht ganz so effizient zu sein. Bei Integern ist die VM hingegen schneller.



  • mastercpp schrieb:

    21:16:33 mastercpp@chi ~ % javac -O JBench.java              
    21:17:37 mastercpp@chi ~ % java JBench                       
    JBench V 0.022       Test loops: 1
    

    ...

    Ups, sehe grade, dass Test loops ausversehen auf 1 gesetzt war. Deswegen wahrscheinlich die schlechten/uneinheitlichen Ergebnisse.

    Warum der gcj beim Sum64 Test immer noch 0 ms wieder gibt weiß ich nicht. Wahrscheinlich irgendeine Optimierung (so dass er die Schleife nicht wirklich ausführt), die aber dann eigentlich acuh beim Sum32 Test ziehen müsste. Aber der gcj ist ja eh mit Vorsicht zu genießen, wie ich laß.


Anmelden zum Antworten