在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
- Java Optional使用的最佳實踐Java
- 使用Java Optional類的最佳實踐 - oracleJavaOracle
- 使用 Java 8 Optional 的正確姿勢Java
- Java 8 之 OptionalJava
- 使用Java8中的Optional類來消除程式碼中的null檢查JavaNull
- 使用Java 8 Optional避免空指標異常Java指標
- Java8 Optional類Java
- Java基礎系列-OptionalJava
- java8-Optional APIJavaAPI
- 如何正確使用Java8的Optional機制Java
- 在 Java 中如何使用 transientJava
- REST 在 Java 中的使用RESTJava
- Java 8 新特性---Optional類Java
- 在Linux中,假如公司網站訪問速度變的很慢很慢,該如何處理?Linux網站
- Java 9 Optional API 新增方法JavaAPI
- Java 8新特性(三):Optional類Java
- Java8新特性之:OptionalJava
- java8特性 Optional 工具類Java
- 用Java optional模仿Kotlin? - WelshJavaKotlin
- The Builder pattern simulates named optional parameters(Java)UIJava
- Maven中optional和scope元素的使用,你弄明白了?Maven
- 在Java中this關鍵字的使用Java
- ?Java8新特性之Optional類Java
- java8 新特性之Optional 類Java
- 講講Java8的Optional類Java
- Java8 新特性之 Optional 類Java
- 【效能優化】dbms_stats在ORACLE中的使用優化Oracle
- 正規表示式在Java中的使用Java
- ThreadLocal在java web工程中的使用。threadJavaWeb
- Java 中 StringBuilder 在高效能用法總結JavaUI
- optional
- 《Java 8 in Action》Chapter 10:用Optional取代nullJavaAPTNull
- java 8 Stream,Optional的流庫詳解Java
- 京東雲開發者|深入JDK中的OptionalJDK
- Maven中optional標籤詳解(轉)Maven
- Java8中的流操作-基本使用&效能測試Java
- 你的專案使用Optional了嗎?