越来越多的库被描述为高性能,并且有支持该要求的基准。 这是我所知道的选择。

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

Java中的高性能库相关推荐

  1. java使用外部库_在Java中使用外部库

    java使用外部库 Java附带了一组核心库,其中包括定义常用数据类型和相关行为的库,例如String或Date : 与主机操作系统进行交互的实用程序,例如System或File : 有用的子系统来管 ...

  2. java中fmt标签库_jsp fmt标签详解

    JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言.同时还提供了格式化数据和日期的方法.实现这些功能需要I18N格式标签库(I18N-capable f ...

  3. Java中不依赖于第三方库使用OpenSSL生成的RSA公私钥进行数据加解密

    本文出处:http://blog.csdn.net/chaijunkun/article/details/7275632,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  4. java中的STL库_C++11 STL线程库实现一个简单的线程池

    使用C++11 STL线程库实现一个线程池.处理机制是抢占式的,即所有线程从一个队列(std::queue)中获取任务执行(计算字符串简单HASH值),使用std::mutex和std::condit ...

  5. java保存私钥_如何在Java中使用密钥库来存储私钥?

    小编典典 注意:此代码仅用于演示目的.将私钥存储在磁盘上时,必须对其进行加密.不要按原样使用它. 您可以执行以下操作: KeyPairGenerator kpg = KeyPairGenerator. ...

  6. 加载SD卡中的SO库

    基本信息 作者:kaedea 项目:android-dynamical-loading JNI与NDK Android中JNI的使用其实就包含了动态加载,APP运行时动态加载.so库并通过JNI调用其 ...

  7. java中通过JNA调用dll

    ---恢复内容开始--- 1. JNA简单介绍 先说JNI(Java Native Interface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(尤其C/C++)写的代码进 ...

  8. 宣布EAXY:使Java中的XML更容易

    Java中的XML库是一个雷区. 操作和读取XML所需的代码量令人震惊,使用不同的库遇到类路径问题的风险很大,并且对名称空间的处理带来许多混乱和错误. 最糟糕的是,情况似乎并没有改善. 一位同事让我意 ...

  9. 宣布EAXY:在Java中简化XML

    Java中的XML库是一个雷区. 操作和读取XML所需的代码量令人震惊,使用不同的库遇到类路径问题的风险很大,并且命名空间的处理带来了很多混乱和错误. 最糟糕的是,情况似乎并没有改善. 一位同事让我意 ...

最新文章

  1. ZooKeeper内部原理
  2. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 80 Days(双向队列+尺取法)
  3. Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案
  4. 深度学习-Tensorflow2.2-tf.data输入模块{2}-tf.data基础用法-09
  5. 第二十四期:面试问:Kafka为什么速度那么快?该怎么回答
  6. Bash-Shell-02
  7. C++类成员属性的一种简洁实现
  8. HandlerThread原理和实际应用
  9. 使用boost中的线程池
  10. 我的世界服务器领地怎么无限大,我的世界:Minecraft都市传说,MC无限大?让我们一起寻找边界吧...
  11. GJB 软件质量保证报告(模板)
  12. “Unexpected end of JSON input while parsing near···”错误解决方案
  13. H7-TOOL脱机烧录器支持1拖4,支持新唐,GD32,MM32,AT32,APM32,CX32,STM32,STM8,i.MX RT,W7500,外置Flash等2020-10-27
  14. mfc上位机网络接收图片并显示_基于UDS on CAN的BootLoader上位机
  15. es的refresh和flush介绍
  16. 如何使用Google云端硬盘备份和还原WhatsApp消息
  17. 例说hg(四)———— 杂说hg使用场景
  18. 国科gk7102s-sensor框架驱动笔记
  19. Linux运维提升之路
  20. SpringBoot cache-control 配置静态资源缓存 (以及其中的思考经历)

热门文章

  1. 利用反射机制创建新类的两种方式及比较
  2. java hipster!_通过Java Hipster升级Spring Security OAuth和JUnit测试
  3. ide 日志 乱码_IDE日志分析方法pt。 2
  4. 第一个JDK 10(18.3)候选版本(内部版本43)展示了新的版本控制方案
  5. jax-rs jax-ws_您的JAX-RS API并非天生就等于:使用动态功能
  6. spicy命令_Spicy Spring:动态创建自己的BeanDefinition
  7. apache camel_Apache Camel日志组件示例
  8. 仔细看看_仔细看看,您会发现需要改进的地方
  9. 在生产中运行Java:SRE的观点
  10. solr 的maven_使用Maven运行Solr