Menariknya, perbedaan kinerja yang disebutkan dalam contoh di atas, tampaknya terkait dengan alasan lain. Menggunakan 3 Kelas yang berbeda, rata-rata kinerjanya akan hampir sama:
import java.util.LinkedHashMap;
public class PerfomanceClass {
public static void main(String[] args) {
long time = System.nanoTime();
Class class1 = "String".getClass();
Class class11 = "Integer".getClass();
Class class111 = "LinkedHashMap".getClass();
System.out.println("time (getClass()) :" + (System.nanoTime() - time) + " ns");
long time2 = System.nanoTime();
Class class2 = String.class;
Class class22 = Integer.class;
Class class222 = LinkedHashMap.class;
System.out.println("time (.class):" + (System.nanoTime() - time2) + " ns");
} }
Outputnya akan seperti ini:
time (getClass()) :23506 ns
time (.class):23838 ns
Dan mengubah urutan panggilan bahkan akan menghasilkan getClass()
lebih cepat.
import java.util.LinkedHashMap;
public class PerfomanceClass {
public static void main(String[] args) {
long time2 = System.nanoTime();
Class class2 = LinkedHashMap.class;
System.out.println("time (.class):" + (System.nanoTime() - time2) + " ns");
long time = System.nanoTime();
Class class1 = "LinkedHashMap".getClass();
System.out.println("time (getClass()) :" + (System.nanoTime() - time) + " ns");
}}
Keluaran:
time (.class):33108 ns
time (getClass()) :6622 ns
A.class.getClass()
?