Java中的高性能庫

越來越多的庫被描述為高性能,并且有支持該要求的基準。 這是我所知道的選擇。

Disruptor庫 – http://code.google.com/p/disruptor/

LMAX旨在成為世界上最快的交易平臺。 顯然,為了實現這一目標,我們需要做一些特殊的事情,以通過我們的Java平臺實現極低的延遲和高吞吐量。 性能測試表明,使用隊列在系統各階段之間傳遞數據會引入延遲,因此我們專注于優化此區域。

Disruptor是我們研究和測試的結果。 我們發現CPU級別的緩存未命中以及需要內核仲裁的鎖定都非常昂貴,因此我們創建了一個框架,該框架對其運行的硬件具有“機械同情”,并且是無鎖的。

在具有32GB RAM的基于3Ghz雙插槽四核Nehalem的Dell服務器上測量了600萬TPS基準。

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373511.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373511.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373511.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 命令行上執行多個命令(分隔符簡介使用)

Linux 系統可以在一個命令行上執行多個命令,相應的命令行的分隔符簡介及使用如下: ; 如果命令被分號(;)所分隔,那么命令會連續的執行下去,就算是錯誤的命令也會繼續執行后面的命令。示例如下: ls /home/; ls /etc/i…

codeforces 732/D 二分

給出考試時間和考試需要準備的時間&#xff0c;問最早考完所有科目的時間 二分答案 NlogN 二分抄神犇的寫法 感覺挺舒服的嘻嘻嘻 1 #include<bits/stdc.h>2 using namespace std;3 const int MAXN1e55;4 int N,M,d[MAXN],w[MAXN],cnt[MAXN];5 void read(int &x){6 …

XML基礎(二)

XML命名規則&#xff1a; ①名稱可以含字母、數字以及其他的字符 ②名稱不能以數字或標點符號開始 ③名稱不能以“xml”開始 ④名稱不能包含空格 ⑤盡量避免"-", "." ,":"等字符 xml元素是可擴展的。 XML屬性&#xff1a; 屬性提供有關元素的額外…

NoSQLBooster for MongoDB 中跨庫關聯查詢

? 使用 MongoDB 是我們常常會遇到一些特殊的需求需要跨庫關聯查詢&#xff0c;比如訂單明細缺商品重量需要補商品重量&#xff0c;而商品重量數據又在商品庫中&#xff0c;這事就需要跨庫關聯操作&#xff0c;示例代碼如下&#xff1a; // 使用 order 庫&#xff0c;注意語句…

網頁版的svn怎樣同步代碼_學會使用Hdlbits網頁版Verilog代碼仿真驗證平臺

大家推薦一款網頁版的 Verilog代碼編輯仿真驗證平臺&#xff0c;這個平臺是國外的一家開源FPGA學習網站&#xff0c;通過“https://hdlbits.01xz.net/wiki/Main_Page”地址鏈接進入網頁&#xff0c;在該網頁上可以進行Verilog代碼的編寫、綜合&#xff0c;而且最后還能夠仿真出…

遇到的零碎問題

Show()時&#xff0c;其他窗口仍可響應&#xff0c;ShowDialog()時其他窗口無響應。 在public Form1()中使用messagebox會先出現信息窗口&#xff0c;再顯示主窗體&#xff0c;故考慮加入了start按鈕。 play()會被打斷&#xff0c;PlaySync&#xff08;&#xff09;會播放完再執…

Tomcat上具有JAX-WS的Web服務

讓我們假設一家企業正在一個集中式系統中維護用戶身份驗證詳細信息。 我們需要創建一個AuthenticationService&#xff0c;它將獲取憑據&#xff0c;對其進行驗證并返回狀態。 其余的應用程序將使用AuthenticationService對用戶進行身份驗證。 創建AuthenticationService接口&a…

Python的下載及安裝

1、官網下載地址&#xff1a;https://www.python.org/downloads/ 2、python設置環境變量&#xff1a; 在系統變量里添加Python的安裝位置 3、在cmd里輸入python里即可轉載于:https://www.cnblogs.com/fun0623/p/5257573.html

MongoDB 字段拼接 $concat(aggregation)

$concat 拼接字符串操作&#xff0c;返回拼接后的字符串。語法格式如下&#xff1a; { $concat: [ <expression1>, <expression2>, ... ] }參數可以是任何有效的表達式&#xff0c;只要它們解析為字符串即可。 有關表達式的更多信息&#xff0c;請參閱表達式。 示…

cmake mysql 編譯參數_Cmake-MySQL編譯參數說明

Cmake-MySQL編譯參數說明(來源于MySQL官方手冊)https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.htmlFormats Description DefaultIntroduced Removed ##格式描述默認導入刪除BUILD_CONFIG Use same build options as official releases ##b使用相同…

動態給H5頁面綁定數據,基本萬能無錯誤!

此為原創&#xff0c;轉載請注明出處&#xff01; /* * 共通用綁定頁面數據用方法 * * param bingData 需要綁定的數據 * * return 無 * */function commonBindData(bingData) { // 取得需綁定的json數據 var jsonArray eval("(" bingData ")"); // …

c語言函數---M

書畫小說軟件 制作更滿意的讀、更舒心的寫、更輕松的公布最全古典小說網 由本軟件公布所得main()主函數 每一C 程序都必須有一main()函數, 能夠依據自己的愛好把它放在程序的某 個地方。有些程序猿把它放在最前面, 而還有一些程序猿把它放在最后面, 不管放 在哪個地方, 下面幾…

使用Apache ActiveMQ的JMS開發基礎

去年是我嘗試JMS的時候。 背后的想法和概念讓我有些困惑&#xff0c;但是當我知道它的用途后&#xff0c;我很快就掌握了它。 在本文中&#xff0c;我將展示使用Apache ActiveMQ作為后端使用Java開發簡單的生產者/消費者的基礎。 讓我們首先從概念開始&#xff0c;這是一個簡單…

vijos p1460——拉力賽

描述 車展結束后&#xff0c;游樂園決定舉辦一次盛大的山道拉力賽&#xff0c;平平和韻韻自然也要來參加大賽。 賽場上共有n個連通的計時點&#xff0c;n-1條賽道&#xff08;構成了一棵樹&#xff09;。每個計時點的高度都不相同&#xff08;父結點的高度必然大于子結點&#…

mysql acid_Mysql中ACID的原理

原子性 (Atomicity)原子性是指一個事務是一個不可分割的工作單位&#xff0c;其中的操作要么都做&#xff0c;要么都不做。隔離性 (Isolation)隔離性是指多個事務并發執行的時候&#xff0c;事務內部的操作與其他事務是隔離的&#xff0c;并發執行的各個事務之間不能互相干擾…

MongoDB 自動刪除集合中過期的數據——TTL索引

簡介 ? TTL (Time To Live, 有生命周期的) 索引是特殊單字段索引&#xff0c;MongoDB可以用來在一定時間后自動從集合中刪除文檔的特殊索引。 這對于某些類型的數據非常好&#xff0c;例如機器生成的事件數據&#xff0c;日志和會話信息&#xff0c;這些信息只需要在數據庫中…

PLSQL 經常自動斷開失去連接的解決過程

問題背景&#xff1a; 情況是這樣的&#xff0c;很多開發同事的PLSQL上班時間開著8個小時&#xff0c;有時候他們出去抽煙后或者中午吃完飯&#xff0c;回來在PLSQL上面執行就報錯無響應&#xff0c;然后卡住了半天動彈不了&#xff0c;非得重新登錄plsql才生效&#xff0c;我猜…

使用Cobertura,JUnit,HSQLDB,JPA涵蓋您的測試

你好&#xff01;你好嗎&#xff1f; 今天讓我們談談一個非常有用的工具&#xff0c;名為“ Cobertura”。 該框架與我們在另一篇文章中看到的Emma框架具有相同的功能。 Cobertura和Emma之間的主要區別在于Cobertura顯示帶有圖形的簡歷頁面。 如果要查看有關該主題的其他主題…

fedora mysql gui_fedora8安裝 mysql++失敗!!裝了一個晚上沒搞定!!傷心阿!

fedora8安裝 mysql失敗&#xff01;&#xff01;裝了一個晚上沒搞定&#xff01;&#xff01;傷心阿&#xff01;發布時間:2008-02-24 05:15:27來源:紅聯作者:lygzx[rootF8 mysql-3.0.0]# ./configure --w/usr/lib/mysqlconfigure: error: unrecognized option: --w/usr/lib/my…

MongoDB 數組類型查詢 —— $elemMatch 操作符

描述 $elemMatch 數組查詢操作用于查詢數組值中至少有一個能完全匹配所有的查詢條件的文檔。語法格式如下&#xff1a; { <field>: { $elemMatch: { <query1>, <query2>, ... } } }如果只有一個查詢條件就沒必要使用 $elemMatch。 限制 不能指定 $where 查…