Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save nguyentruongtho/b221292d4a52baed0ff2 to your computer and use it in GitHub Desktop.
Save nguyentruongtho/b221292d4a52baed0ff2 to your computer and use it in GitHub Desktop.
Dummy benchmark
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