Lotto - google caliper Benchmark

X

Xyz1

Gast
Werte Leute, Hallo,

inspiriert durch dieses Thema:
http://www.java-forum.org/thema/zufallszahlen-ohne-wiederholung.173956/
das es hier schon mal gab (Lotto),
hab ich einfach mal vier Methoden aufgeschrieben, um das Problem zu lösen:
Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication;

import com.google.caliper.Runner;
import com.google.caliper.SimpleBenchmark;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Random;
import java.util.TreeSet;

/**
* @author
*/
public class Lotto {

    public static class LottoTest extends SimpleBenchmark {

        @Override
        protected void setUp() throws Exception {
            super.setUp();
        }

        @Override
        protected void tearDown() throws Exception {
            super.tearDown();
        }

        public void timeA6aus49(int reps) {
            for (int i = 0; i < reps; i++) {
                a6aus49();
            }
        }

        public void timeB6aus49(int reps) {
            for (int i = 0; i < reps; i++) {
                b6aus49();
            }
        }

        public void timeC6aus49(int reps) {
            for (int i = 0; i < reps; i++) {
                c6aus49();
            }
        }

        public void timeD6aus49(int reps) {
            for (int i = 0; i < reps; i++) {
                d6aus49();
            }
        }
    }

    public static void main(String[] args) {
        System.out.println("a6aus49() = " + a6aus49());
        System.out.println("b6aus49() = " + b6aus49());
        System.out.println("c6aus49() = " + c6aus49());
        System.out.println("d6aus49() = " + d6aus49());

        Runner.main(LottoTest.class, new String[0]);
    }

    public static ArrayList<Integer> a6aus49() {
        Random r = new Random();
        ArrayList<Integer> ali = new ArrayList<Integer>();
        while (ali.size() < 6) {
            int i = r.nextInt(49) + 1;
            if (!ali.contains(i)) {
                ali.add(i);
            }
        }
        Collections.sort(ali);
        return ali;
    }

    public static ArrayList<Integer> b6aus49() {
        Random r = new Random();
        HashSet<Integer> hsi = new HashSet<Integer>();
        while (hsi.size() < 6) {
            hsi.add(r.nextInt(49) + 1);
        }
        ArrayList<Integer> ali = new ArrayList<Integer>(hsi);
        Collections.sort(ali);
        return ali;
    }

    public static ArrayList<Integer> c6aus49() {
        Random r = new Random();
        TreeSet<Integer> tsi = new TreeSet<Integer>();
        while (tsi.size() < 6) {
            tsi.add(r.nextInt(49) + 1);
        }
        ArrayList<Integer> ali = new ArrayList<Integer>(tsi);
        return ali;
    }

    public static ArrayList<Integer> d6aus49() {
        Random r = new Random();
        ArrayList<Integer> ali1 = new ArrayList<Integer>();
        ArrayList<Integer> ali2 = new ArrayList<Integer>();
        for (int i = 1; i <= 49; i++) {
            ali1.add(i);
        }
        for (int i = 0; i < 6; i++) {
            ali2.add(ali1.remove(r.nextInt(ali1.size())));
        }
        Collections.sort(ali2);
        return ali2;
    }
}

Mein Problem ist jetzt, ich verwende google caliper 0.5 rc1 und egal, was ich mache, ich bekomme immer:
Code:
run:
a6aus49() = [4, 6, 15, 22, 30, 37]
b6aus49() = [5, 16, 21, 24, 35, 37]
c6aus49() = [10, 11, 12, 17, 26, 29]
d6aus49() = [2, 18, 20, 25, 39, 45]
0% Scenario{vm=java, trial=0, benchmark=C6aus49}Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.io.Closeables.closeQuietly(Ljava/io/Closeable;)V
    at com.google.caliper.Runner.measure(Runner.java:301)
    at com.google.caliper.Runner.runScenario(Runner.java:229)
    at com.google.caliper.Runner.runOutOfProcess(Runner.java:378)
    at com.google.caliper.Runner.run(Runner.java:97)
    at com.google.caliper.Runner.main(Runner.java:423)
    at com.google.caliper.Runner.main(Runner.java:436)
    at javaapplication.Lotto.main(Lotto.java:64)
Java Result: 1
BUILD SUCCESSFUL (total time: 17 seconds)

Ich hab auch kein How-To, Tutorial o. Ä. gefunden (außer ein YT-Video, das aber veraltet ist?). Ich hab auch caliper 1.0 usw. ausprobiert, aber es sollte schon unter WINDOW lauffähig sein.

Könnt ihr mir bitte behilflich sein? :rolleyes:

Besten Dank
 

Flown

Administrator
Mitarbeiter
Ich habe es jetzt ausgetestet mit 0.5-rc1 und dabei ein paar Kleinigkeiten geändert (da Benchmarktests immer Rückgabewerte haben sollten!):
Java:
package javaapplication;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.TreeSet;

import com.google.caliper.Runner;
import com.google.caliper.SimpleBenchmark;

public class Lotto {
 
  public static class LottoTest extends SimpleBenchmark {
   
    public List<Integer> timeA6aus49(int reps) {
      List<Integer> dummy = null;
      for (int i = 0; i < reps; i++) {
        dummy = a6aus49();
      }
      return dummy;
    }
   
    public List<Integer> timeB6aus49(int reps) {
      List<Integer> dummy = null;
      for (int i = 0; i < reps; i++) {
        dummy = b6aus49();
      }
      return dummy;
    }
   
    public List<Integer> timeC6aus49(int reps) {
      List<Integer> dummy = null;
      for (int i = 0; i < reps; i++) {
        dummy = c6aus49();
      }
      return dummy;
    }
   
    public List<Integer> timeD6aus49(int reps) {
      List<Integer> dummy = null;
      for (int i = 0; i < reps; i++) {
        dummy = d6aus49();
      }
      return dummy;
    }
  }
 
  public static void main(String[] args) {
    System.out.println("a6aus49() = " + a6aus49());
    System.out.println("b6aus49() = " + b6aus49());
    System.out.println("c6aus49() = " + c6aus49());
    System.out.println("d6aus49() = " + d6aus49());
   
    Runner.main(LottoTest.class, new String[0]);
  }
 
  public static ArrayList<Integer> a6aus49() {
    Random r = new Random();
    ArrayList<Integer> ali = new ArrayList<>();
    while (ali.size() < 6) {
      int i = r.nextInt(49) + 1;
      if (!ali.contains(i)) {
        ali.add(i);
      }
    }
    Collections.sort(ali);
    return ali;
  }
 
  public static ArrayList<Integer> b6aus49() {
    Random r = new Random();
    HashSet<Integer> hsi = new HashSet<>();
    while (hsi.size() < 6) {
      hsi.add(r.nextInt(49) + 1);
    }
    ArrayList<Integer> ali = new ArrayList<>(hsi);
    Collections.sort(ali);
    return ali;
  }
 
  public static ArrayList<Integer> c6aus49() {
    Random r = new Random();
    TreeSet<Integer> tsi = new TreeSet<>();
    while (tsi.size() < 6) {
      tsi.add(r.nextInt(49) + 1);
    }
    ArrayList<Integer> ali = new ArrayList<>(tsi);
    return ali;
  }
 
  public static ArrayList<Integer> d6aus49() {
    Random r = new Random();
    ArrayList<Integer> ali1 = new ArrayList<>();
    ArrayList<Integer> ali2 = new ArrayList<>();
    for (int i = 1; i <= 49; i++) {
      ali1.add(i);
    }
    for (int i = 0; i < 6; i++) {
      ali2.add(ali1.remove(r.nextInt(ali1.size())));
    }
    Collections.sort(ali2);
    return ali2;
  }
}
Resultat ist:
Code:
a6aus49() = [2, 11, 13, 15, 31, 37]
b6aus49() = [4, 16, 19, 21, 31, 33]
c6aus49() = [3, 16, 20, 23, 34, 39]
d6aus49() = [20, 28, 30, 42, 43, 47]
0% Scenario{vm=java, trial=0, benchmark=A6aus49} 267,32 ns; σ=2,65 ns @ 9 trials
25% Scenario{vm=java, trial=0, benchmark=B6aus49} 381,23 ns; σ=12,02 ns @ 10 trials
50% Scenario{vm=java, trial=0, benchmark=D6aus49} 785,77 ns; σ=15,29 ns @ 10 trials
75% Scenario{vm=java, trial=0, benchmark=C6aus49} 242,28 ns; σ=0,72 ns @ 3 trials

benchmark  ns linear runtime
  A6aus49 267 ==========
  B6aus49 381 ==============
  D6aus49 786 ==============================
  C6aus49 242 =========

vm: java
trial: 0
 
Zuletzt bearbeitet:
X

Xyz1

Gast
Moin, bei mir funktioniert es auch mit Rückgabewert nicht (ebenfalls 0.5-rc1):
Java:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication;

import com.google.caliper.Runner;
import com.google.caliper.SimpleBenchmark;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Random;
import java.util.TreeSet;

/**
 * @author
 */
public class Lotto {

    public static class LottoTest extends SimpleBenchmark {

        /*
        @Override
        protected void setUp() throws Exception {
            super.setUp();
        }

        @Override
        protected void tearDown() throws Exception {
            super.tearDown();
        }
        */

        public ArrayList<Integer> timeA6aus49(int reps) {
            ArrayList<Integer> temp = null;
            for (int i = 0; i < reps; i++) {
                temp = a6aus49();
            }
            return temp;
        }

        public ArrayList<Integer> timeB6aus49(int reps) {
            ArrayList<Integer> temp = null;
            for (int i = 0; i < reps; i++) {
                temp = b6aus49();
            }
            return temp;
        }

        public ArrayList<Integer> timeC6aus49(int reps) {
            ArrayList<Integer> temp = null;
            for (int i = 0; i < reps; i++) {
                temp = c6aus49();
            }
            return temp;
        }

        public ArrayList<Integer> timeD6aus49(int reps) {
            ArrayList<Integer> temp = null;
            for (int i = 0; i < reps; i++) {
                temp = d6aus49();
            }
            return temp;
        }
    }

    public static void main(String[] args) {
        System.out.println("a6aus49() = " + a6aus49());
        System.out.println("b6aus49() = " + b6aus49());
        System.out.println("c6aus49() = " + c6aus49());
        System.out.println("d6aus49() = " + d6aus49());

        Runner.main(LottoTest.class, new String[0]);
    }

    public static ArrayList<Integer> a6aus49() {
        Random r = new Random();
        ArrayList<Integer> ali = new ArrayList<Integer>();
        while (ali.size() < 6) {
            int i = r.nextInt(49) + 1;
            if (!ali.contains(i)) {
                ali.add(i);
            }
        }
        Collections.sort(ali);
        return ali;
    }

    public static ArrayList<Integer> b6aus49() {
        Random r = new Random();
        HashSet<Integer> hsi = new HashSet<Integer>();
        while (hsi.size() < 6) {
            hsi.add(r.nextInt(49) + 1);
        }
        ArrayList<Integer> ali = new ArrayList<Integer>(hsi);
        Collections.sort(ali);
        return ali;
    }

    public static ArrayList<Integer> c6aus49() {
        Random r = new Random();
        TreeSet<Integer> tsi = new TreeSet<Integer>();
        while (tsi.size() < 6) {
            tsi.add(r.nextInt(49) + 1);
        }
        ArrayList<Integer> ali = new ArrayList<Integer>(tsi);
        return ali;
    }

    public static ArrayList<Integer> d6aus49() {
        Random r = new Random();
        ArrayList<Integer> ali1 = new ArrayList<Integer>();
        ArrayList<Integer> ali2 = new ArrayList<Integer>();
        for (int i = 1; i <= 49; i++) {
            ali1.add(i);
        }
        for (int i = 0; i < 6; i++) {
            ali2.add(ali1.remove(r.nextInt(ali1.size())));
        }
        Collections.sort(ali2);
        return ali2;
    }
}

Code:
run:
a6aus49() = [12, 15, 21, 30, 37, 48]
b6aus49() = [1, 16, 17, 18, 26, 29]
c6aus49() = [7, 14, 20, 32, 35, 48]
d6aus49() = [14, 21, 23, 26, 30, 40]
 0% Scenario{vm=java, trial=0, benchmark=B6aus49}Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.io.Closeables.closeQuietly(Ljava/io/Closeable;)V
	at com.google.caliper.Runner.measure(Runner.java:301)
	at com.google.caliper.Runner.runScenario(Runner.java:229)
	at com.google.caliper.Runner.runOutOfProcess(Runner.java:378)
	at com.google.caliper.Runner.run(Runner.java:97)
	at com.google.caliper.Runner.main(Runner.java:423)
	at com.google.caliper.Runner.main(Runner.java:436)
	at javaapplication.Lotto.main(Lotto.java:74)
Java Result: 1
BUILD SUCCESSFUL (total time: 15 seconds)

Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Lotto, einfaches Problem? Allgemeine Java-Themen 11
M Hilfe: Lotto: die 6 häufigsten generierten zahlen ausgeben Allgemeine Java-Themen 13
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
E Key für TOTP Algorythmus(Google Authentificator) Allgemeine Java-Themen 0
N Google Authenticator Algorithmus (SHA1) Allgemeine Java-Themen 1
L Compiler-Fehler Google Guice Module zur Laufzeit zusammenstellen und binden Allgemeine Java-Themen 4
T Google Links in einer Liste Allgemeine Java-Themen 4
L Google Guice Field Injection returns null Allgemeine Java-Themen 2
G Google-Suche ist nicht auslesbar?! Allgemeine Java-Themen 18
I Java google Sandbox benutzen Allgemeine Java-Themen 1
T Google Distance Matrix API Hello World/ Client Secret Allgemeine Java-Themen 3
T Google Maps API nächste Person Allgemeine Java-Themen 5
T Google OAuth 2.0 aber wie Allgemeine Java-Themen 16
F Über Java Google Suche nutzen Allgemeine Java-Themen 11
M Google App Engine macht Probleme Allgemeine Java-Themen 4
M Google Guice (Assisted Injects) - Buggy oder mach ich's falsch? Allgemeine Java-Themen 5
F Google Guice + Generics + Vererbung Allgemeine Java-Themen 5
yvesdaeschle Google Spreadsheet Allgemeine Java-Themen 6
M google plus java api - Anfänger sucht Hilfe Allgemeine Java-Themen 7
M GWT Project nur in Google Chrome sichtbar Allgemeine Java-Themen 7
L Java und Javascript um Distanz über Google Maps zu berchnen Allgemeine Java-Themen 10
S Frage: Google Maps "Map" in Java Allgemeine Java-Themen 3
M Google API Allgemeine Java-Themen 6
algorismi Google maps in Java Swing Allgemeine Java-Themen 2
P Google Abfrage auslesen Allgemeine Java-Themen 2
DamienX Google Guice AOP + Logging Allgemeine Java-Themen 3
FoolMoon API für Google Suchergebnisse? Allgemeine Java-Themen 23
Pfirsich Java + Begriff = Pos + Domain (Google API) !!! Allgemeine Java-Themen 14
M Google Maps mit Java Allgemeine Java-Themen 5
B Regex -> Bspw. _NUR_ GOOGLE.de Allgemeine Java-Themen 7
R Google Keyword Position Allgemeine Java-Themen 11
R Wie Google & Co mit Java nutzen? Allgemeine Java-Themen 16
J Bitte um Kurzinfo bez. JMF (ja, war bei Forumssuche/google) Allgemeine Java-Themen 2
Y Google Map + JSP Tag Libary Allgemeine Java-Themen 2
N google maps api mit javaserver faces Allgemeine Java-Themen 5
C Server-Zahl von google.com Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben