Created
December 3, 2014 11:04
-
-
Save nguyentruongtho/b221292d4a52baed0ff2 to your computer and use it in GitHub Desktop.
Dummy benchmark
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.company; | |
import java.lang.reflect.InvocationTargetException; | |
import java.lang.reflect.Method; | |
import java.util.Random; | |
public class ClassWithNakedConstructorInstantiationBenchMark { | |
static final int COUNT = 1000000; | |
static final String CLASS_NAME = HelloWorld.class.getName(); | |
public static void main(String[] args) | |
throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, | |
InvocationTargetException, InstantiationException { | |
// dummy warming up | |
Random random = new Random(); | |
for (int i=0; i < 100; ++i) { | |
random.nextInt(); | |
random.nextBoolean(); | |
} | |
normalWay(); | |
callStaticMethod(); | |
newInstance(); | |
constructorThenNewInstance(); | |
System.out.println("\n"); | |
normalWay(); | |
constructorThenNewInstance(); | |
newInstance(); | |
callStaticMethod(); | |
System.out.println("\n"); | |
normalWay(); | |
constructorThenNewInstance(); | |
callStaticMethod(); | |
newInstance(); | |
} | |
private static void normalWay() { | |
long start = System.currentTimeMillis(); | |
for (int i = 0; i < COUNT; ++i) { | |
HelloWorld hw = new HelloWorld(); | |
hw.d2Method1(); | |
} | |
long end = System.currentTimeMillis(); | |
System.out.printf("[%d] Normal way\n", end - start); | |
} | |
private static void callStaticMethod() | |
throws NoSuchMethodException, ClassNotFoundException, IllegalAccessException, | |
InvocationTargetException { | |
long start = System.currentTimeMillis(); | |
for (int i = 0; i < COUNT; ++i) { | |
Method m1 = Class.forName(CLASS_NAME).getMethod("s2Method1"); | |
m1.invoke(null); | |
} | |
long end = System.currentTimeMillis(); | |
System.out.printf("[%d] Use static method\n", end - start); | |
} | |
private static void newInstance() | |
throws InstantiationException, IllegalAccessException, ClassNotFoundException { | |
long start = System.currentTimeMillis(); | |
for (int i = 0; i < COUNT; ++i) { | |
HelloWorld hw1 = | |
(HelloWorld) Class.forName(CLASS_NAME).newInstance(); | |
hw1.d2Method1(); | |
} | |
long end = System.currentTimeMillis(); | |
System.out.printf("[%d] Use newInstance\n", end - start); | |
} | |
private static void constructorThenNewInstance() | |
throws InstantiationException, IllegalAccessException, InvocationTargetException, | |
NoSuchMethodException, ClassNotFoundException { | |
long start = System.currentTimeMillis(); | |
for (int i = 0; i < COUNT; ++i) { | |
HelloWorld hw1 = | |
(HelloWorld) Class.forName(CLASS_NAME).getConstructor().newInstance(); | |
hw1.d2Method1(); | |
} | |
long end = System.currentTimeMillis(); | |
System.out.printf("[%d] Use getConstructor().newInstance()\n", end - start); | |
} | |
public static class HelloWorld extends HelloWorld1 { | |
public HelloWorld() {} | |
public HelloWorld(String s) {} | |
public HelloWorld(Integer i) {} | |
public HelloWorld(Double d) {} | |
public HelloWorld(Float f) {} | |
public static HelloWorld getInstance() { | |
return new HelloWorld(); | |
} | |
public static void s2Method1() { } | |
public static void s2Method2() { } | |
public static void s2Method3() { } | |
public static void s2Method4() { } | |
public static void s2Method5() { } | |
public static void s2Method6() { } | |
public static void s2Method7() { } | |
public static void s2Method8() { } | |
public static void s2Method9() { } | |
public void dMethod1() { } | |
public void dMethod2() { } | |
public void dMethod3() { } | |
public void dMethod4() { } | |
public void dMethod5() { } | |
public void dMethod6() { } | |
public void dMethod7() { } | |
public void dMethod8() { } | |
public void dMethod9() { } | |
} | |
public static class HelloWorld1 extends HelloWorld2 { | |
public HelloWorld1() {} | |
public HelloWorld1(String s) {} | |
public HelloWorld1(Integer i) {} | |
public HelloWorld1(Double d) {} | |
public HelloWorld1(Float f) {} | |
public static void sMethod1() { } | |
public static void sMethod2() { } | |
public static void sMethod3() { } | |
public static void sMethod4() { } | |
public static void sMethod5() { } | |
public static void sMethod6() { } | |
public static void sMethod7() { } | |
public static void sMethod8() { } | |
public static void sMethod9() { } | |
public void d1Method1() { } | |
public void d1Method2() { } | |
public void d1Method3() { } | |
public void d1Method4() { } | |
public void d1Method5() { } | |
public void d1Method6() { } | |
public void d1Method7() { } | |
public void d1Method8() { } | |
public void d1Method9() { } | |
} | |
public static class HelloWorld2 extends HelloWorld3 { | |
public HelloWorld2() {} | |
public HelloWorld2(String s) {} | |
public HelloWorld2(Integer i) {} | |
public HelloWorld2(Double d) {} | |
public HelloWorld2(Float f) {} | |
public static void s2Method1() { } | |
public static void s2Method2() { } | |
public static void s2Method3() { } | |
public static void s2Method4() { } | |
public static void s2Method5() { } | |
public static void s2Method6() { } | |
public static void s2Method7() { } | |
public static void s2Method8() { } | |
public static void s2Method9() { } | |
public void d2Method1() { } | |
public void d2Method2() { } | |
public void d2Method3() { } | |
public void d2Method4() { } | |
public void d2Method5() { } | |
public void d2Method6() { } | |
public void d2Method7() { } | |
public void d2Method8() { } | |
public void d2Method9() { } | |
} | |
public static class HelloWorld3 extends HelloWorld4 { | |
public HelloWorld3() {} | |
public HelloWorld3(String s) {} | |
public HelloWorld3(Integer i) {} | |
public HelloWorld3(Double d) {} | |
public HelloWorld3(Float f) {} | |
public static void s2Method1() { } | |
public static void s2Method2() { } | |
public static void s2Method3() { } | |
public static void s2Method4() { } | |
public static void s2Method5() { } | |
public static void s2Method6() { } | |
public static void s2Method7() { } | |
public static void s2Method8() { } | |
public static void s2Method9() { } | |
public void d3Method1() { } | |
public void d3Method2() { } | |
public void d3Method3() { } | |
public void d3Method4() { } | |
public void d3Method5() { } | |
public void d3Method6() { } | |
public void d3Method7() { } | |
public void d3Method8() { } | |
public void d3Method9() { } | |
} | |
public static class HelloWorld4 { | |
public HelloWorld4() {} | |
public HelloWorld4(String s) {} | |
public HelloWorld4(Integer i) {} | |
public HelloWorld4(Double d) {} | |
public HelloWorld4(Float f) {} | |
public static void s2Method1() { } | |
public static void s2Method2() { } | |
public static void s2Method3() { } | |
public static void s2Method4() { } | |
public static void s2Method5() { } | |
public static void s2Method6() { } | |
public static void s2Method7() { } | |
public static void s2Method8() { } | |
public static void s2Method9() { } | |
public void d4Method1() { } | |
public void d4Method2() { } | |
public void d4Method3() { } | |
public void d4Method4() { } | |
public void d4Method5() { } | |
public void d4Method6() { } | |
public void d4Method7() { } | |
public void d4Method8() { } | |
public void d4Method9() { } | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment