Java中的高性能库
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
Java中的高性能库相关推荐
- java使用外部库_在Java中使用外部库
java使用外部库 Java附带了一组核心库,其中包括定义常用数据类型和相关行为的库,例如String或Date : 与主机操作系统进行交互的实用程序,例如System或File : 有用的子系统来管 ...
- java中fmt标签库_jsp fmt标签详解
JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言.同时还提供了格式化数据和日期的方法.实现这些功能需要I18N格式标签库(I18N-capable f ...
- Java中不依赖于第三方库使用OpenSSL生成的RSA公私钥进行数据加解密
本文出处:http://blog.csdn.net/chaijunkun/article/details/7275632,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...
- java中的STL库_C++11 STL线程库实现一个简单的线程池
使用C++11 STL线程库实现一个线程池.处理机制是抢占式的,即所有线程从一个队列(std::queue)中获取任务执行(计算字符串简单HASH值),使用std::mutex和std::condit ...
- java保存私钥_如何在Java中使用密钥库来存储私钥?
小编典典 注意:此代码仅用于演示目的.将私钥存储在磁盘上时,必须对其进行加密.不要按原样使用它. 您可以执行以下操作: KeyPairGenerator kpg = KeyPairGenerator. ...
- 加载SD卡中的SO库
基本信息 作者:kaedea 项目:android-dynamical-loading JNI与NDK Android中JNI的使用其实就包含了动态加载,APP运行时动态加载.so库并通过JNI调用其 ...
- java中通过JNA调用dll
---恢复内容开始--- 1. JNA简单介绍 先说JNI(Java Native Interface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(尤其C/C++)写的代码进 ...
- 宣布EAXY:使Java中的XML更容易
Java中的XML库是一个雷区. 操作和读取XML所需的代码量令人震惊,使用不同的库遇到类路径问题的风险很大,并且对名称空间的处理带来许多混乱和错误. 最糟糕的是,情况似乎并没有改善. 一位同事让我意 ...
- 宣布EAXY:在Java中简化XML
Java中的XML库是一个雷区. 操作和读取XML所需的代码量令人震惊,使用不同的库遇到类路径问题的风险很大,并且命名空间的处理带来了很多混乱和错误. 最糟糕的是,情况似乎并没有改善. 一位同事让我意 ...
最新文章
- ZooKeeper内部原理
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 80 Days(双向队列+尺取法)
- Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案
- 深度学习-Tensorflow2.2-tf.data输入模块{2}-tf.data基础用法-09
- 第二十四期:面试问:Kafka为什么速度那么快?该怎么回答
- Bash-Shell-02
- C++类成员属性的一种简洁实现
- HandlerThread原理和实际应用
- 使用boost中的线程池
- 我的世界服务器领地怎么无限大,我的世界:Minecraft都市传说,MC无限大?让我们一起寻找边界吧...
- GJB 软件质量保证报告(模板)
- “Unexpected end of JSON input while parsing near···”错误解决方案
- H7-TOOL脱机烧录器支持1拖4,支持新唐,GD32,MM32,AT32,APM32,CX32,STM32,STM8,i.MX RT,W7500,外置Flash等2020-10-27
- mfc上位机网络接收图片并显示_基于UDS on CAN的BootLoader上位机
- es的refresh和flush介绍
- 如何使用Google云端硬盘备份和还原WhatsApp消息
- 例说hg(四)———— 杂说hg使用场景
- 国科gk7102s-sensor框架驱动笔记
- Linux运维提升之路
- SpringBoot cache-control 配置静态资源缓存 (以及其中的思考经历)
热门文章
- 利用反射机制创建新类的两种方式及比较
- java hipster!_通过Java Hipster升级Spring Security OAuth和JUnit测试
- ide 日志 乱码_IDE日志分析方法pt。 2
- 第一个JDK 10(18.3)候选版本(内部版本43)展示了新的版本控制方案
- jax-rs jax-ws_您的JAX-RS API并非天生就等于:使用动态功能
- spicy命令_Spicy Spring:动态创建自己的BeanDefinition
- apache camel_Apache Camel日志组件示例
- 仔细看看_仔细看看,您会发现需要改进的地方
- 在生产中运行Java:SRE的观点
- solr 的maven_使用Maven运行Solr