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的要求。

Javolutionhttp://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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值