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