效能最佳化
“效能最佳化”——一個老生常談的話題。如何提高系統性能?是我們每一個開發者都需要考慮的問題,每個公司都要求程式設計師寫出效能良好、維護性強的程式碼,現在各種高階職位的任職要求也會把最佳化系統作為必選要求之一。我們一般談到效能最佳化都是簡單粗暴升級系統硬體,或者購置更多的機器水平擴充套件系統,從而減少單機負荷。但這方法顯然是治標不治本,其實出現效能問題的原因一般在於那些“壞程式碼”的堆積,如何寫出優雅、易讀、高質量、易於擴充套件的程式碼才是我們真正要考慮的問題。
那麼問題來了,怎麼做?
效能最佳化一直都是軟體工程師們的苦處。市面上有關於效能最佳化的資料有太多太多但真正能從run-time的視角指出了Java程式碼系統性最佳化的一些方向和實戰技法的卻是很少,前段時間我從阿里朋友手上偶然得到的一份效能最佳化筆記卻顛覆了我的認知,它可以作為Java程式設計師追求效能極致的參考指南甚至案頭手冊。不多bb,下面一睹為快!
第一部分Java程式碼最佳化透過一個不超過10行的程式碼最佳化示例介紹如何對Java系統進行最佳化,如何使用JMH驗證效能最佳化
JMH常用設定字串和數字操作介紹JDK的核心類String、Number和併發包
字串拼接併發程式設計和非同步程式設計併發程式設計非同步程式設計程式碼效能最佳化透過20多個最佳化技巧來說明Java效能最佳化的各種方法
使用Native方法靜態方法呼叫錯誤最佳化策略高效能工具介紹了常用的高效能工具,如Caffeine、Jackson、 HikariCP, 並對其高效能的原因做了一定的原始碼解析。
CaffeineJSON工具第二部分Java註釋規範不同於程式碼規範,這部分強調編寫易於閱讀的程式碼,會從程式碼註釋、程式碼分解、面向物件三方面進行講解。容易閱讀的程式碼是系統性能最佳化的前提。
@deprecated可讀性程式碼中間變數第三部分JIT最佳化介紹JIT最佳化。JIT最佳化對Java系統執行有深刻的影響,本章系統介紹了JIT編譯器、程式碼快取、內聯等知識。
程式碼快取第四部分程式碼審查包含30多個具有“壞味道”的程式碼片段,讀者可以嘗試最佳化程式碼。
完善註釋第五部分ASM執行時增強介紹Java位元組碼和ASM,用於執行時增強Java系統;
運算元棧的變化分析JSR269編譯時增強介紹JSR269規範,用於編譯時增強Java系統。透過使用這些技術,可以有效提升系統的維護性和效能。
Java編譯的過程註解處理器的使用由於篇幅限制就只能這樣展示了,還望見諒!
最後高效能的程式,都沒有容易二字,都是一個細節一個細節摳出來的,這份文件不只是效能最佳化,在程式碼規範上也有很好的詮釋。好的規範可以規避大部分的“坑”,因此如果你想少“踩坑”,一定不要錯過。