java反射耗時測試案例解析
更新時間:2019年10月17日 08:19:53 作者:一首簡單的歌
這篇文章主要介紹了java反射耗時測試案例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
java反射相對與普通的對象調(diào)用原理上來說更加耗時,在調(diào)用次數(shù)較少的情況下可忽略性能損失,但當(dāng)調(diào)用次數(shù)非常多時,需要考慮到此問題,即調(diào)用次數(shù)過多時不宜使用反射,以下舉例:
package com.test.reflection; import java.lang.reflect.Method; public class ReflectionDemo { public static void main(String[] args) throws Exception { // 常規(guī)方式 Student student = new Student(); long startNormal = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { student.setName("hello"); } System.out.println("timeNormal=" + (System.currentTimeMillis() - startNormal)); //反射方式 Class<?> cla=Class.forName("com.test.reflection.Student"); long startReflection = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { Method method=cla.getDeclaredMethod("setName", String.class); method.invoke(cla.newInstance(), "hello"); } System.out.println("timeReflection=" + (System.currentTimeMillis() - startReflection)); } }
運行結(jié)果:
timeNormal=8 timeReflection=537
這是在簡單使用反射調(diào)用某個方法的場景下1000000調(diào)用的性能差距。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Log4j2代碼方式配置實現(xiàn)線程級動態(tài)控制
這篇文章主要介紹了使用Log4j2代碼方式配置實現(xiàn)線程級動態(tài)控制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Java 信息摘要加密MD2、MD4、MD5實現(xiàn)詳解
這篇文章主要介紹了Java 信息摘要加密MD2、MD4、MD5實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07Java實現(xiàn)多線程大批量同步數(shù)據(jù)(分頁)
這篇文章主要為大家詳細介紹了Java實現(xiàn)多線程大批量同步數(shù)據(jù)(分頁),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08