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.mzph.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 查…