據我所知,public/protected/private
關鍵字對創建時間沒有影響。但我想知道保持一個公共對象/類可訪問應該有成本。它是否有成本?'public/protected/private`關鍵字對性能有任何影響嗎?
回答
不,他們沒有。它們本質上是編譯時構造。
也就是說,一些OOP語言(例如C++)可以根據private
來做出優化決定。但是由於反映,這不太可能在Java中被利用,因爲在Java中,private
不是保證它對類以外的東西的隱形性。
保持公共對象/類可訪問應該有成本。
是的,編譯器需要檢查你正在訪問的東西是私有的,受保護的和公共的。然後決定你是否被允許訪問它。
但是在運行時,運行時不需要檢查是否允許您訪問變量。爲什麼?因爲要運行一個程序,它必須被編譯(除非你使用像JS這樣的解釋語言)。如果你試圖訪問你不允許的變量,它甚至不會運行!
所以在運行時,運行時不需要擔心是否可以訪問變量,因此對性能沒有影響。
這個答案不完整。在類加載時(在運行時),字節碼驗證程序會檢查您是否沒有訪問私有的,受保護的或包私有的方法,以及沒有此權限的代碼中的字段和類。此檢查需要一些(最小)時間,但只需加載一次。 –
然後它有成本。 – ahmetozkok
我認爲你應該寫這個答案。 – ahmetozkok
- 1. 使用'this'關鍵字會影響Java性能嗎?
- 2. 靜態關鍵字對常量有影響嗎?
- 3. CanExecuteCommand有任何性能影響?
- 4. C++如何影響可變關鍵字的容器性能?
- 5. 主鍵對SQLite性能的影響
- 6. 使用字母鍵中的非字母數字字符對字典有任何性能影響
- 7. NSClassFromString會影響性能嗎?
- 8. NSLog是否對應用程序性能有任何影響?
- 9. 放棄的會話id對Azure服務總線性能有任何影響嗎?
- 10. 功能原型對性能有影響嗎?
- 11. MouseMove對性能的影響
- 12. connection.commit()對性能的影響
- 13. `USE`對性能的影響
- 14. javax.servlet.Filter對性能的影響?
- 15. 對性能的影響
- 16. Systemtap對性能的影響
- 17. QueryPerformanceCounter對性能的影響
- 18. 虛擬關鍵字與* derived *類中的函數對性能的影響
- 19. 屬性覆蓋沒有任何影響
- 20. DOCTYPE對CSS有影響嗎?
- 21. 如何使音量鍵對Audioplyer聲音沒有任何影響
- 22. PHP | $ value = $ anothervalue = getValue() - 它對性能有負面影響嗎?
- 23. EC2網絡性能對VPC內部有影響嗎?
- 24. 包含不使用的類對性能有影響嗎?
- 25. 性能影響
- 26. Android:setSelection對Spinner沒有任何影響
- 27. SingleColumnValueFilter對結果沒有任何影響
- 28. FREENECT_DEPTH_REGISTERED對libfreenect沒有任何影響
- 29. 對setViewController沒有任何影響:animiated:?
- 30. Div對內容沒有任何影響
看看http://stackoverflow.com/questions/7365329/speed-optimizing-private-and-public-variables-java,http://stackoverflow.com/questions/26676200/how-does-access-modifier -impact-the-performance-in-java,http://stackoverflow.com/questions/4279420/does-use-of-final-keyword-in-java-improve-the-performance – Andrew
這是一個[示例]( http://stackoverflow.com/a/23281131/3448419)訪問修飾符如何影響運行時性能。 – apangin