java/src/main/java/cz/cvut/fit/swing/calipel/core/BenchmarkInstance.java
author Marcel Hlopko <marcel@hlopko.com>
Wed, 05 Nov 2014 21:15:34 +0100
changeset 254 e7f75a252b17
child 256 00902ea305e4
permissions -rw-r--r--
Move calipel-java from separate project into jv-calipel
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
254
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
     1
package cz.cvut.fit.swing.calipel.core;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
     2
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
     3
import java.lang.reflect.InvocationTargetException;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
     4
import java.lang.reflect.Method;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
     5
import java.util.LinkedHashMap;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
     6
import java.util.Map;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
     7
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
     8
public class BenchmarkInstance {
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
     9
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    10
    private Object benchmarkImplementation;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    11
    private String selector;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    12
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    13
    public BenchmarkInstance(Object benchmarkImplementation, String selector) {
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    14
        this.benchmarkImplementation = benchmarkImplementation;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    15
        this.selector = selector;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    16
    }
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    17
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    18
    public Long timeIt() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    19
        Method measuredMethod = benchmarkImplementation.getClass().getDeclaredMethod(selector);
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    20
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    21
        Long start = System.currentTimeMillis();
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    22
        measuredMethod.invoke(benchmarkImplementation);
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    23
        Long end = System.currentTimeMillis();
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    24
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    25
        return end - start;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    26
    }
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    27
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    28
    public Map toMap() {
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    29
        Map map = new LinkedHashMap();
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    30
        map.put("class", benchmarkImplementation.getClass().getSimpleName());
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    31
        map.put("selector", selector);
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    32
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    33
        return map;
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    34
    }
e7f75a252b17 Move calipel-java from separate project into jv-calipel
Marcel Hlopko <marcel@hlopko.com>
parents:
diff changeset
    35
}