author | Marcel Hlopko <marcel@hlopko.com> |
Wed, 05 Nov 2014 21:15:34 +0100 | |
changeset 254 | e7f75a252b17 |
child 256 | 00902ea305e4 |
permissions | -rw-r--r-- |
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 |
} |