Disruptor庫 – http://code.google.com/p/disruptor/
LMAX旨在成為世界上最快的交易平臺。 顯然,為了實現這一目標,我們需要做一些特殊的事情,以通過我們的Java平臺實現極低的延遲和高吞吐量。 性能測試表明,使用隊列在系統各階段之間傳遞數據會引入延遲,因此我們專注于優化此區域。
Disruptor是我們研究和測試的結果。 我們發現CPU級別的緩存未命中以及需要內核仲裁的鎖定都非常昂貴,因此我們創建了一個框架,該框架對其運行的硬件具有“機械同情”,并且是無鎖的。
http://martinfowler.com/articles/lmax.html
Java紀事 – https://github.com/peter-lawrey/Java-Chronicle
該庫是內存數據庫中的超低延遲,高吞吐量,持久性,消息傳遞和事件驅動的庫。 典型的等待時間低至16納秒,支持每秒5-20百萬條消息/記錄更新的吞吐量。
它幾乎不使用堆,對GC的影響很小,可以比物理內存大小大得多(僅受磁盤大小限制)。 并且可以在進程之間共享,使用環回套接字的延遲要好于1/10。
它可以更改設計系統的方式,因為它允許您具有可以同時運行或不能同時運行的獨立進程(因為不會丟失任何消息)。這對于重新啟動服務和從固定數據測試服務很有用。 例如,像亞微秒級持久消息。
您可以連接任意數量的閱讀器,包括用于從外部查看數據確切狀態的工具。 例如,您可以使用; od -t cx1 {file}查看當前狀態。
柯爾特矩陣庫 – http://acs.lbl.gov/software/colt/
例如,在CERN進行的科學和技術計算的特點是問題大小苛刻,并且需要在占用內存空間較小的情況下實現高性能。 許多人認為Java語言不適合這種工作。 但是,其發展的最新趨勢表明,它可能很快將成為對性能敏感的科學和技術計算的主要參與者。 例如,IBM Watson的Ninja項目顯示Java確實可以執行BLAS矩陣計算,其速度高達優化的Fortran的90%。 Java Grande論壇數字工作組提供了一個有關Java數值計算信息的聯絡點。 隨著性能差距的不斷縮小,Java最近在該領域得到了越來越多的采用。 原因包括易用性,跨平臺性質,對多線程的內置支持,網絡友好的API和大量可用的開發人員。 但是,由于缺乏在C和Fortran中廣泛使用和方便訪問的基礎工具包,因此在很大程度上阻礙了這些努力。
最新的穩定Colt版本在JDK ibm-1.4.1,RedHat 9.0、2x IntelXeon@2.8 GHz上突破了1.9 Gflop / s的要求。
Javolution – http://javolution.org/
Javolution實時目標很簡單:使您的應用程序更快,更可預測! 通過以下方式實現:
- 高性能和時間確定性(實時)的util / lang / text / io / xml基類。
- 上下文編程,以實現關注點的真正分離(記錄,性能等)。
- 一個測試框架不僅涉及單元測試,還涉及性能和回歸測試。
- 具有ConcurrentContext的直接和低級并行計算功能。 用于直接與本機應用程序(例如C / C ++)接口的Struct和Union基類。
- 世界上最快,第一個硬實時XML編組/解組工具。 簡單而靈活的應用程序配置管理。
原始的Trove集合 – http://trove.starlight-systems.com/
Trove庫為Java提供了高速的常規和原始集合。
GNU Trove庫有兩個目標:
- 提供java.util Collections API的“免費”(如“言論自由”和“免費啤酒”),快速,輕量級的實現。 這些實現被設計為可替代其JDK。
- 提供具有與上述類似的API的原始集合。 JDK中的這種差距通常通過對基于對象的集合使用“包裝器”類(java.lang.Integer,java.lang.Float等)來解決。 但是,對于大多數應用程序而言,直接存儲基元的集合將需要較少的空間并獲得顯著的性能提升。
MG4J:為Java?管理千兆字節 – http://mg4j.dsi.unimi.it/
MG4J(為Java管理千兆字節)是一個免費的全文本搜索引擎,適用于用Java編寫的大型文檔集合。 MG4J是一個高度可定制的,高性能的,成熟的搜索引擎,提供最新功能(例如BM25 / BM25F評分)和新的研究算法。
其他連結:
8個性能庫概述
http://www.dzone.com/links/r/8_best_open_source_high_performance_java_collecti.html
有時,JDK中的收集類可能還不夠。 我們可能需要一些高性能哈希表,Bigarrays等。請查看開源高性能集合庫列表。
序列化基準
http://code.google.com/p/thrift-protobuf-compare/wiki/基準測試
這是一些序列化庫的比較。
它仍然很難擊敗手工編碼的序列化。
http://vanillajava.blogspot.com/2011/10/serialization-using-bytebuffer-and.html
參考:來自我們JCG合作伙伴的 Java高性能庫 ? Vanilla Java博客上的Peter Lawrey。
翻譯自: https://www.javacodegeeks.com/2012/02/high-performance-libraries-in-java.html