反射為什么消耗性能大 java反射創(chuàng)建對象的效率是怎樣的呢?
java反射創(chuàng)建對象的效率是怎樣的呢?您需要知道偉大的spring框架的核心是Java的反射機制讓我們陳述一下結(jié)論:Java的反射速度很慢,但是與直接調(diào)用相比,它慢了一個數(shù)量級。但是,在某些場景中,必
java反射創(chuàng)建對象的效率是怎樣的呢?
您需要知道偉大的spring框架的核心是Java的反射機制
讓我們陳述一下結(jié)論:Java的反射速度很慢,但是與直接調(diào)用相比,它慢了一個數(shù)量級。但是,在某些場景中,必須使用反射,也可以使用一些手段進行人工優(yōu)化
]我們來說說為什么Java的反射比Python慢一點,Java是一種靜態(tài)的語言類型,也就是說在編譯過程中,Java在編譯代碼時會進行很強的類型檢查,Java會在編譯期間進行代碼優(yōu)化,而反射發(fā)生在運行時,也就是說那些類型檢查和代碼優(yōu)化都是在運行時進行的,這自然需要一點時間,在運行時優(yōu)化反射是非常困難的。當前的編譯階段不是很智能。我知道你需要用這個反射代碼做什么
3。再次調(diào)用實現(xiàn)過程。在調(diào)用反射的過程中,執(zhí)行器被稱為methodaccessor。我記得這個東西裝得很慢。也就是說,第一次反射調(diào)用可能需要較長的時間和時間方法.invoke方法還需要對參數(shù)數(shù)組進行封裝,這可能涉及參數(shù)類型自適應、封裝和解包。實際上,歸根結(jié)底,我們還是不知道具體的參數(shù)類型
javascript語言只花了十天的時間就設計出來了,所以自然的設計并不完美。甚至,一旦頁面打開,彈出的小廣告,都是用JS完成的。隨著Google地圖等應用程序的發(fā)布,AJAX技術(shù)徹底火了JS,很多應用程序使用AJAX,最重要的技術(shù)就是JavaScript。
盡管JavaScript有缺陷,但它仍在不斷升級。經(jīng)過不斷的改進,現(xiàn)在的JS應該說是優(yōu)秀的。隨著大前端時代的到來,節(jié)點.js, 虛擬用戶.js等等技術(shù),也讓JS的地位不可動搖。想要完全取代JS,不是一夜之間。微軟推出了typescript,谷歌推出了dart來取代JS,但現(xiàn)在看來還有很長的路要走。
沒有語言是完美的,就像沒有人是完美的一樣。程序員只需要找到最合適的語言。在未來,也許有一天,一種新的語言將取代JavaScript。
Java反射到底慢在哪里?
可能有以下方法:
1。緩存要調(diào)用的類型、對象實例或方法以減少調(diào)用次數(shù)Class.forName類,構(gòu)造對象和getmethods的次數(shù),例如使用HashMap進行緩存。如果要支持熱部署,則需要控制緩存和版本之間的關(guān)系。
2. 在cache的基礎上,嘗試用接口來實現(xiàn)方法調(diào)用,而不是調(diào)用。Java中沒有委托。最有效的方法是對委托人的使用提出投訴。
既然Javascript有這么多缺陷,那為什么人們不參考它的功能開發(fā)一門新語言而是一直對它修改呢?
我很高興回答您的問題。
一般來說,隱私只是一種協(xié)議。