Java通过方法内部类获取当前类类名性能测试

294 阅读4分钟

Java通过方法内部类获取当前类类名性能测试

获取类名性能测试 2206022200

获取全类名

测试代码

package 获取类名;

public class 通过方法内部类获取当前类名_性能测试2206022158 {
	
	public static String myName() {class C{}String cn=C.class.getName();return cn.substring(0,cn.lastIndexOf('$'));}
	
	static String myName;
	
	final static void pln(Object...oar) {for(Object o:oar)System.out.println(o);}
	final static String trt(String tag, Object...oar) {
		StringBuilder sb = new StringBuilder("<tr>");
		for(Object o:oar)sb.append("<"+tag+">"+o+"</"+tag+">");
		return (sb+"</tr>");
	}
	final static String trth(Object...oar) {return trt("th",oar);}
	final static String trtd(Object...oar) {return trt("td",oar);}
	
	final static int w = 10000;
	final static int amountArray[] = new int[] {
			w,w,w,w,w,w,
			w,20000,30000,40000,50000,60000,70000,80000,90000,
			w,20000,30000,40000,50000,60000,70000,80000,90000,
			10*w, 20*w, 30*w, 40*w, 50*w, 60*w, 70*w, 80*w, 90*w,
//			100*w, 200*w, 300*w, 
			100*w, 200*w, 300*w, 400*w, 500*w, 600*w, 700*w, 800*w, 900*w,
			1000*w, 2000*w, 3000*w, 4000*w, 5000*w, 6000*w, 7000*w, 8000*w, 9000*w,
			1*w*w,
//			1*w*w, 2*w*w, 3*w*w,
//			1*w*w, 2*w*w, 3*w*w, 4*w*w, 5*w*w, 6*w*w, 7*w*w, 8*w*w, 9*w*w,
//			10*w*w,
			};
	
	
	final static void main(int amount) {
		long t1 = System.currentTimeMillis();
		for(int c=0; c<amount; c++) {
			myName = myName();
		}
		long t2 = System.currentTimeMillis();
		long cost1 = t2-t1;
		pln(trtd(amount+"次",amount/10000D+"万次",amount/100000000D+"亿次",cost1+" 毫秒",cost1/1000D+" 秒"));
	}
	public static void main(String...arguments) {
		pln("<table><thead>"
				+ trth("执行次数","执行万次数","执行亿次数","用时(毫秒)","用时(秒)")
				+ "</thead><tbody>");
		for(int amount:amountArray)main(amount);
		pln("</tbody></table>",myName);
	}
	
	
	

}

测试结果

执行次数执行万次数执行亿次数用时(毫秒)用时(秒)
10000次1.0万次1.0E-4亿次3 毫秒0.003 秒
10000次1.0万次1.0E-4亿次1 毫秒0.001 秒
10000次1.0万次1.0E-4亿次2 毫秒0.002 秒
10000次1.0万次1.0E-4亿次1 毫秒0.001 秒
10000次1.0万次1.0E-4亿次1 毫秒0.001 秒
10000次1.0万次1.0E-4亿次1 毫秒0.001 秒
10000次1.0万次1.0E-4亿次1 毫秒0.001 秒
20000次2.0万次2.0E-4亿次2 毫秒0.002 秒
30000次3.0万次3.0E-4亿次2 毫秒0.002 秒
40000次4.0万次4.0E-4亿次2 毫秒0.002 秒
50000次5.0万次5.0E-4亿次4 毫秒0.004 秒
60000次6.0万次6.0E-4亿次4 毫秒0.004 秒
70000次7.0万次7.0E-4亿次5 毫秒0.005 秒
80000次8.0万次8.0E-4亿次1 毫秒0.001 秒
90000次9.0万次9.0E-4亿次2 毫秒0.002 秒
10000次1.0万次1.0E-4亿次0 毫秒0.0 秒
20000次2.0万次2.0E-4亿次0 毫秒0.0 秒
30000次3.0万次3.0E-4亿次2 毫秒0.002 秒
40000次4.0万次4.0E-4亿次2 毫秒0.002 秒
50000次5.0万次5.0E-4亿次3 毫秒0.003 秒
60000次6.0万次6.0E-4亿次5 毫秒0.005 秒
70000次7.0万次7.0E-4亿次5 毫秒0.005 秒
80000次8.0万次8.0E-4亿次6 毫秒0.006 秒
90000次9.0万次9.0E-4亿次6 毫秒0.006 秒
100000次10.0万次0.001亿次2 毫秒0.002 秒
200000次20.0万次0.002亿次7 毫秒0.007 秒
300000次30.0万次0.003亿次8 毫秒0.008 秒
400000次40.0万次0.004亿次24 毫秒0.024 秒
500000次50.0万次0.005亿次36 毫秒0.036 秒
600000次60.0万次0.006亿次41 毫秒0.041 秒
700000次70.0万次0.007亿次47 毫秒0.047 秒
800000次80.0万次0.008亿次52 毫秒0.052 秒
900000次90.0万次0.009亿次29 毫秒0.029 秒
1000000次100.0万次0.01亿次24 毫秒0.024 秒
2000000次200.0万次0.02亿次49 毫秒0.049 秒
3000000次300.0万次0.03亿次71 毫秒0.071 秒
4000000次400.0万次0.04亿次93 毫秒0.093 秒
5000000次500.0万次0.05亿次153 毫秒0.153 秒
6000000次600.0万次0.06亿次161 毫秒0.161 秒
7000000次700.0万次0.07亿次165 毫秒0.165 秒
8000000次800.0万次0.08亿次191 毫秒0.191 秒
9000000次900.0万次0.09亿次213 毫秒0.213 秒
10000000次1000.0万次0.1亿次237 毫秒0.237 秒
20000000次2000.0万次0.2亿次483 毫秒0.483 秒
30000000次3000.0万次0.3亿次725 毫秒0.725 秒
40000000次4000.0万次0.4亿次963 毫秒0.963 秒
50000000次5000.0万次0.5亿次1212 毫秒1.212 秒
60000000次6000.0万次0.6亿次1455 毫秒1.455 秒
70000000次7000.0万次0.7亿次1689 毫秒1.689 秒
80000000次8000.0万次0.8亿次1963 毫秒1.963 秒
90000000次9000.0万次0.9亿次2175 毫秒2.175 秒
100000000次10000.0万次1.0亿次2415 毫秒2.415 秒
获取类名.通过方法内部类获取当前类名_性能测试2206022158

获取简单类名

测试代码

package 获取类名;

public class 通过方法内部类获取当前简单类名_性能测试2206022215 {
	
	public static String myName() {class C{}String cn=C.class.getName();return cn.substring(cn.lastIndexOf('.')+1,cn.lastIndexOf('$'));}
	
	static String myName;
	
	final static void pln(Object...oar) {for(Object o:oar)System.out.println(o);}
	final static String trt(String tag, Object...oar) {
		StringBuilder sb = new StringBuilder("<tr>");
		for(Object o:oar)sb.append("<"+tag+">"+o+"</"+tag+">");
		return (sb+"</tr>");
	}
	final static String trth(Object...oar) {return trt("th",oar);}
	final static String trtd(Object...oar) {return trt("td",oar);}
	
	final static int w = 10000;
	final static int amountArray[] = new int[] {
			w,w,w,w,w,w,
			w,20000,30000,40000,50000,60000,70000,80000,90000,
			w,20000,30000,40000,50000,60000,70000,80000,90000,
			10*w, 20*w, 30*w, 40*w, 50*w, 60*w, 70*w, 80*w, 90*w,
//			100*w, 200*w, 300*w, 
			100*w, 200*w, 300*w, 400*w, 500*w, 600*w, 700*w, 800*w, 900*w,
			1000*w, 2000*w, 3000*w, 4000*w, 5000*w, 6000*w, 7000*w, 8000*w, 9000*w,
			1*w*w,
//			1*w*w, 2*w*w, 3*w*w,
//			1*w*w, 2*w*w, 3*w*w, 4*w*w, 5*w*w, 6*w*w, 7*w*w, 8*w*w, 9*w*w,
//			10*w*w,
			};
	
	
	final static void main(int amount) {
		long t1 = System.currentTimeMillis();
		for(int c=0; c<amount; c++) {
			myName = myName();
		}
		long t2 = System.currentTimeMillis();
		long cost1 = t2-t1;
		pln(trtd(amount+"次",amount/10000D+"万次",amount/100000000D+"亿次",cost1+" 毫秒",cost1/1000D+" 秒"));
	}
	public static void main(String...arguments) {
		pln("<table><thead>"
				+ trth("执行次数","执行万次数","执行亿次数","用时(毫秒)","用时(秒)")
				+ "</thead><tbody>");
		for(int amount:amountArray)main(amount);
		pln("</tbody></table>",myName);
	}
	
	
	

}

测试结果

执行次数执行万次数执行亿次数用时(毫秒)用时(秒)
10000次1.0万次1.0E-4亿次4 毫秒0.004 秒
10000次1.0万次1.0E-4亿次0 毫秒0.0 秒
10000次1.0万次1.0E-4亿次1 毫秒0.001 秒
10000次1.0万次1.0E-4亿次1 毫秒0.001 秒
10000次1.0万次1.0E-4亿次1 毫秒0.001 秒
10000次1.0万次1.0E-4亿次2 毫秒0.002 秒
10000次1.0万次1.0E-4亿次0 毫秒0.0 秒
20000次2.0万次2.0E-4亿次1 毫秒0.001 秒
30000次3.0万次3.0E-4亿次2 毫秒0.002 秒
40000次4.0万次4.0E-4亿次3 毫秒0.003 秒
50000次5.0万次5.0E-4亿次3 毫秒0.003 秒
60000次6.0万次6.0E-4亿次4 毫秒0.004 秒
70000次7.0万次7.0E-4亿次6 毫秒0.006 秒
80000次8.0万次8.0E-4亿次2 毫秒0.002 秒
90000次9.0万次9.0E-4亿次2 毫秒0.002 秒
10000次1.0万次1.0E-4亿次0 毫秒0.0 秒
20000次2.0万次2.0E-4亿次1 毫秒0.001 秒
30000次3.0万次3.0E-4亿次0 毫秒0.0 秒
40000次4.0万次4.0E-4亿次2 毫秒0.002 秒
50000次5.0万次5.0E-4亿次2 毫秒0.002 秒
60000次6.0万次6.0E-4亿次4 毫秒0.004 秒
70000次7.0万次7.0E-4亿次5 毫秒0.005 秒
80000次8.0万次8.0E-4亿次6 毫秒0.006 秒
90000次9.0万次9.0E-4亿次7 毫秒0.007 秒
100000次10.0万次0.001亿次8 毫秒0.008 秒
200000次20.0万次0.002亿次9 毫秒0.009 秒
300000次30.0万次0.003亿次14 毫秒0.014 秒
400000次40.0万次0.004亿次24 毫秒0.024 秒
500000次50.0万次0.005亿次38 毫秒0.038 秒
600000次60.0万次0.006亿次45 毫秒0.045 秒
700000次70.0万次0.007亿次50 毫秒0.05 秒
800000次80.0万次0.008亿次57 毫秒0.057 秒
900000次90.0万次0.009亿次58 毫秒0.058 秒
1000000次100.0万次0.01亿次43 毫秒0.043 秒
2000000次200.0万次0.02亿次81 毫秒0.081 秒
3000000次300.0万次0.03亿次122 毫秒0.122 秒
4000000次400.0万次0.04亿次164 毫秒0.164 秒
5000000次500.0万次0.05亿次206 毫秒0.206 秒
6000000次600.0万次0.06亿次249 毫秒0.249 秒
7000000次700.0万次0.07亿次285 毫秒0.285 秒
8000000次800.0万次0.08亿次326 毫秒0.326 秒
9000000次900.0万次0.09亿次366 毫秒0.366 秒
10000000次1000.0万次0.1亿次408 毫秒0.408 秒
20000000次2000.0万次0.2亿次816 毫秒0.816 秒
30000000次3000.0万次0.3亿次1232 毫秒1.232 秒
40000000次4000.0万次0.4亿次1640 毫秒1.64 秒
50000000次5000.0万次0.5亿次2043 毫秒2.043 秒
60000000次6000.0万次0.6亿次2479 毫秒2.479 秒
70000000次7000.0万次0.7亿次2860 毫秒2.86 秒
80000000次8000.0万次0.8亿次3277 毫秒3.277 秒
90000000次9000.0万次0.9亿次3684 毫秒3.684 秒
100000000次10000.0万次1.0亿次4100 毫秒4.1 秒
通过方法内部类获取当前简单类名_性能测试2206022215