在Java中使用Optional效能很慢 - pkolaczk
該文通過與Rust對比發現:
- 包裝原始型別的Optional導致速度下降高達 8 倍,並顯著提高了分配率。逃逸分析優化失敗。
- Optional在對效能極其敏感的 Java 程式碼中使用值可能是個壞主意。此處測試的所有 JVM 都未能優化它們。
- 事實證明,最醜陋和最容易出錯的解決方案是最快的:原始型別和魔法值。
- 不要指望 JVM 利用瞭解目標 CPU 並自動利用現代指令集(如 AVX)。實際上,即使sumSimple是向量化的教科書案例,也沒有在這裡進行向量化。
- 瞭解程式的實際效能配置檔案也沒有給 JVM 帶來任何優勢。
- 幸運的是,上述建議不適用於 Rust。RustOption在大多數情況下是零成本的,即使沒有內聯,增加的成本也很小。您不必犧牲程式碼可讀性或安全性來提高速度。
- Option為我的 CPU 優化的Rust 程式碼返回比 Java 程式碼返回快30倍以上,如果以可移植的方式編譯並使用預設設定和無向量化,仍然快10 倍以上。
- 語言及其編譯器在優化強度上有很大差異。不要假設所有可以編譯為機器程式碼的語言都是相同的。
相關文章
- Java Optional使用指南Java
- Optional 的使用會導致效能下降嗎?
- Java Optional使用的最佳實踐Java
- 使用Java Optional類的最佳實踐 - oracleJavaOracle
- Java 8 之 OptionalJava
- 使用Java8中的Optional類來消除程式碼中的null檢查JavaNull
- Java基礎系列-OptionalJava
- Java8 Optional類Java
- java8-Optional APIJavaAPI
- 如何正確使用Java8的Optional機制Java
- 在Linux中,假如公司網站訪問速度變的很慢很慢,該如何處理?Linux網站
- 在 Java 中如何使用 transientJava
- Java 8 新特性---Optional類Java
- 用Java optional模仿Kotlin? - WelshJavaKotlin
- Optional的使用與解析
- java8特性 Optional 工具類Java
- Java 9 Optional API 新增方法JavaAPI
- Java8新特性之:OptionalJava
- Java 8新特性(三):Optional類Java
- 在Java中this關鍵字的使用Java
- 使用Optional,不再頭疼NPE
- Maven中optional和scope元素的使用,你弄明白了?Maven
- ?Java8新特性之Optional類Java
- java8 新特性之Optional 類Java
- 講講Java8的Optional類Java
- 正規表示式在Java中的使用Java
- 使用Optional擺脫NPE的折磨
- 如何在Hibernate/JPA的實體和查詢中使用Java 8 Optional?Java
- Java8中的流操作-基本使用&效能測試Java
- TypeScript 中 Optional Chaining 和 Nullish CoalescingTypeScriptAINull
- java 8 Stream,Optional的流庫詳解Java
- 《Java 8 in Action》Chapter 10:用Optional取代nullJavaAPTNull
- optional
- 使用 Java 在Excel中建立下拉選單JavaExcel
- Redis的安裝及在Java中的使用RedisJava
- Java中使用Optional檢測並獲得非空值的幾種方法Java
- null 不好,我推薦你使用 OptionalNull
- 你的專案使用Optional了嗎?