在Java里面使用instanceof的性能影响
問題:在Java里面使用instanceof的性能影響
我正在寫一個應(yīng)用程序,其中一種設(shè)計方案包含了instanceof操作的大量使用。雖然我知道面向?qū)ο笤O(shè)計通常試圖避免使用instanceof,但那是另一回事了,這個問題純粹只是討論與性能有關(guān)。我想知道這是否會對性能產(chǎn)生任何影響?它和 ==一樣快速嗎?
例如,我有一個有10個子類的父類。在接受父類作為參數(shù)的單個函數(shù)中,我檢查這個類是否是子類的實例,并執(zhí)行一些程序。
我想到的解決它的另一種方法是使用一個“type id”原始整型代替,并使用掩碼表示子類的類別,然后只讓子類“type id”和一個常量掩碼做一次掩碼的比較,比較的結(jié)果就用來表示類別。
instanceof是否被JVM優(yōu)化到比這更快?我想堅持使用Java,但是這個應(yīng)用程序的性能是至關(guān)重要。如果以前有過類似經(jīng)歷的人能提供一些建議,那就太棒啦。我是不是太挑剔了,或者說把注意力放在優(yōu)化錯誤的東西上面了?
回答
現(xiàn)代的JVM/JIT編譯器已經(jīng)消除了大多數(shù)傳統(tǒng)的“慢”操作(包括實例化、異常處理、反射等。)產(chǎn)生的性能影響。
正如Donald Knuth所寫,“我們應(yīng)該忘記小的效率問題,可以說大約97%的情況下:過早的優(yōu)化是萬惡之源。”instanceof的性能可能還沒有成為一個問題,所以不要浪費時間去想一些復(fù)雜的解決方案,除非你確定這已經(jīng)出現(xiàn)問題了。
文章翻譯自Stack Overflow:https://stackoverflow.com/questions/103564/the-performance-impact-of-using-instanceof-in-java
總結(jié)
以上是生活随笔為你收集整理的在Java里面使用instanceof的性能影响的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到好多蛇了是什么意思
- 下一篇: Java里面的静态代码块