disruptor3_发布Disruptor 3.0.0

disruptor3

我决定对整个版本的Disruptor都放置一个beta标签感到无聊,所以我决定将Disruptor 3.0.0发行到全世界。 此版本的最大挑战是清理代码并提出更好的算法来处理多个生产者。 如果我很幸运,可以更快。 在发布此版本时,我最初走了几个阴暗的小巷,但与2.x版本的区别不大,但是又带来了一些好处。 我本来想实施一些功能测试并改善文档,但是我可能会一直等到那些方面,直到我100%满意为止。

改进了对多个生产者的支持

Disruptor的2.x版本真正令人讨厌的问题之一是,它附带了ClaimStrategy的2种实现。 一种是用于线程多于CPU的情况,另一种用于线程少的情况。 这有点难看。 现在,第3版只有一个MultiProducerSequencer(稍后会在Sequencers / ClaimStrategies上提供更多信息),在两种情况下都可以正常工作。 对于无竞争的情况,我们以前的实现大约是18M ops / sec v 15M ops / sec *,但速度较慢,但​​是随着线程数量的增加和CPU数量的增加,扩展性会更好。 去年,我在TechMesh和JAX London上做了一些关于新实现的讨论。 如果您对算法的细节感兴趣,可以观看有关JAX London演讲的YouTube视频 。

没有更多的索赔策略

内部设计和API的主要变化之一是,我摆脱了ClaimStrategy接口。 通过对多生产者用例进行的一些更改,它变得很麻烦。 因此,我删除了它,而是提供了覆盖2个重要用例的Sequencer,SingleProducerSequencer和MultiProducerSequencer的2种实现。 很抱歉,我们不再允许用户在其中插入自己的实现,但是结果使代码变得更加简洁,简单和快捷。

单生产者案例更快

从一个生产者到一个消费者基准测试*,第3版的运行速度约为2.2亿每秒,而第2版的运行速度约为8000万每秒。这主要是总体清理(例如删除ClaimStrategies)和一些小优化的结果。

改进的用于RingBuffer的EventTranslator API

RingBuffer现在支持的EventTranslator API现在具有用于传递给EventTranslator实现的1、2、3和Varargs参数的变体。 这意味着不必通过匿名内部类或通过EventTranslator实现中的字段推送值来完成对EventTranslator的输入。 它还使将EventTranslators编写为易于测试的独立单元变得更加容易。 代码隔离FTW!

定序器的批量生产者接口

我不是我们现有的批量生产者接口的忠实拥护者,最初我打算将其转储。 经过一番思考,我将其部分重新添加了。即,它仅在Sequencer上可用。 如果我可以提出一个干净安全的API来公开该功能,则可以稍后将其添加到RingBuffer中。 出于兴趣,我添加了使用批处理接口的原始定序器吞吐量测试。 该测试没有实际作用,只是在线程之间发出信号。 但是,我证明了Disruptor不能做任何有用的事情,它以10批为单位的速度超过4000000000000 ops / sec。 无论如何,这都不是一个有用的基准,但是对于吹牛的权利来说却是一个很好的选择!

特别提及

有一些人帮助将Disruptor从版本2状态升级到版本3:
  • Jason Koch:亲自做了大量JavaDoc。 自合并他的请求请求以来,我一直在努力使其保持最新状态。
  • Dalibor Novak和Danny Yates:Github和Gradle迁移。
  • Adrian Sutton:有关DSL的进一步工作。
  • 马丁·汤普森(Martin Thompson):对于他的许多有用想法,尤其是围绕支持多个生产者的算法。
现在可以从Maven Central和Github下载页面获得 。
*所有测试都是在3.40 GHz – YMMV的Intel Core i7-3770(Ivy Bridge)上完成的。

参考:来自Bad Concurrency博客的JCG合作伙伴 Michael Barker 发布了Disruptor 3.0.0 。

翻译自: https://www.javacodegeeks.com/2013/04/release-of-disruptor-3-0-0.html

disruptor3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓手机背景变黑色怎么改_别着急扔掉旧手机 你的电脑可能需要它

PC玩家中,不少人都会有在玩游戏时观测电脑硬件状态的习惯。比如查看游戏帧数、CPU频率、GPU频率或是温度等。大多数人都是通过第三方软件,在游戏内把监测数据显示到电脑显示屏角落。可就算是在角落,这些数据依旧会阻挡游戏画面,在…

JDeps入门–分析项目的依赖关系

JDeps是Java依赖关系分析工具 ,这是一个命令行工具,它处理Java字节码(意味着.class文件或包含它们的JAR),并分析类之间静态声明的依赖关系。 可以用各种方式过滤结果,并可以将其汇总到包或JAR级别。 JDeps还…

禅道开源版用户手册_Docker搭建开源版禅道以及项目基本流程介绍

对于自学软件测试的同学来说,经常会遇到这样的困惑:测试用例怎么写?有啥好的模板?缺陷提交的模板是什么样的?bug的生命周期是啥?项目的流程是啥?以上这些困惑,在你仔细看完这篇文章后…

f12 卡 谷歌浏览器_抢券第二课:利用浏览器F12获取优惠券请求链接

抢券第二课为什么迟迟不来呢?因为最近京东没有那种神券需要定点抢购的,我也没法测试我的理论。现在京东的券随时可以领取到,我多没法测试的东西不想就这样欺骗你们。所以今天的第二课我们讲一讲神奇的谷歌浏览器F1201 工具准备一、浏览器这里…

Java命令行界面(第5部分):JewelCli

细算在Java命令行处理与Apache的百科全书CLI , args4j , jbock和命令行中先前的文章,我把注意力转向在这个岗位使用JewelCli完成的命令行参数相似的处理Java中。 几个Java命令行处理库使用批注来定义命令行选项。 到目前为止,本系…

dnf用虚拟机会被制裁吗_DNF: 神豪奶妈扬言, 战斗力没有超过他的, 都不配被加buff!...

要说到现在的年轻人们的交友方式绝对少不了游戏交友,以前的人们只要不出门那就是与世隔绝,而现在就算是不出门也可以在网络上结交一大帮朋友,游戏就是现在的年轻人们交友最多的地方之一。科技的发展让游戏进入了一个繁荣的春天,不…

什么叫轻量瓷_为什么说陶瓷是华夏文明的徽章?

一、先说何为徽章?徽,最基本的解释是标志、符号;章,基本释义较多,其之一为佩戴在身上的标志,如领章、胸章等。徽章,也就是佩戴在身上用以表示身份、职业或者荣誉的标志。徽章的作用是明确身份、…

Java命令行界面(第10部分):picocli

picocli主页面将picocli描述为“强大的微小命令行界面”,“ picocli”是一个文件Java框架,用于解析命令行参数并生成精美,易于定制的用法帮助消息。 有颜色。” 这篇文章简要介绍了如何使用Picocli 0.9.7处理Java代码中的命令行参数。 像本系…

workunit 的指的工作单元是什么_分频器是做什么用的?

由于现在的音箱几乎都采用多单元分频段重放的设计方式,所以必须有一种装置,能够将功放送来的全频带音乐信号按需要划分为高音、低音输出或者高音、中音、低音输出,才能跟相应的喇叭单元连接,分频器就是这样的装置。如果把全频带信…

合并不同gdb下的相同要素_GDB调试学习

简介GDB是GCC的调试工具。其功能如下:启动程序,使程序按自定义形式运行;使程序停止指定断点位置;程序停止后,检查程序执行中的相应情况;动态改变程序执行环境。gdb调试能进行GDB调试,一般在编译…

SpringHibernate3

1.概述 本文将重点介绍通过Spring设置Hibernate 3 –我们将研究如何同时使用XML和Java配置通过Hibernate 3和MySQL设置Spring 3。 2. Hibernate 3的Java Spring配置 使用Spring和Java配置来设置Hibernate 3很简单: import java.util.Properties; import javax.sql…

endnote文献顺序编号不对_把Endnote装进大脑:行走的文献管理者

是否还迷失在茫茫的文献海洋,东翻西找,仍无法获得需要的文献信息?是否还在半手动导入参考文献,费时费力?别着急,文献管理神器-Endnote轻松帮你搞定这些问题。把Endnote“装进”大脑,你就能成为行…

Jersey Web Service Hello World Java示例

在Restlet之后, Jersey是另一个流行的开源框架,可以用Java创建RESTful Web服务 。 Jersey符合JAX-RS规范,实际上它是JAX-RS(JSR 311)(http://jsr311.java.net/nonav/releases/1.1/index.html)规…

蔡司三坐标_蔡司三坐标测针的安装指南

1、装配和辅助工具合适的辅助工具可以在组装测针组时有效防止各部件的损坏,确保安装的安全进行。下面是几种最重要的装配和辅助工具。2、正确调整MT/VAST吸盘MT/VAST吸盘可以通过顶部的三个螺丝进行旋转调节。必须使用不超过2Nm的扭力紧固,为了防止螺丝的…

三电平igbt死区时间计算_IGBT基础与运用-2

IGBT基础与运用-1尝试去计算IGBT的开启过程,主要是时间和门电阻的散热情况。C.GE 栅极-发射极电容C.CE 集电极-发射极电容C.GC 门级-集电极电容(米勒电容)Cies CGE CGC 输入电容Cres CGC 反向电容Coes CGC CCE 输出电容根据充电的详细过程,可以下图…

在2017年从Maven工件生成P2存储库

几年前,我写了一篇博客文章,介绍如何基于Maven工件生成P2存储库。 如今,这种描述的方法已经过时了,我想展示一种基于p2-maven-plugin的新方法,该方法是为解决该问题而创建的。 Maven构建生命周期中的P2-Maven-Plugin集…

循环次数几次_圆柱模板循环使用次数是多少呢

对于同一处做同样的工程,如果需要使用的是圆柱模板,用户一定考虑到底该进多少货,备多少料(圆柱模板)呢?这就需要考虑到圆柱模板循环使用次数和错开的程度来进行决定的?建筑圆柱模板能周转几次?这可能是所有…

network 拦截不到东西是怎么做到的?_都说读中职院校学不到东西,中职学生到底是怎么学习的?...

中职院校在社会中的影响一直并不是很好,一直都是负面影响高于正面影响,那么,我们不禁就要问了,一直在喊提升中职院校的教学质量,质量提升到哪里去了呢!那些中职院校里的学生到底又是怎么学习的呢&#xff1…

数组中查找並返回数组_java数组查找常见情况

一.最简单的查找元素方法(依次比较):给一个数组,在数组里面查找某个元素在数组中的位置,并返回它的位置。public static void main(String[] args) {int arr[] new int[]{12, 4, 54, 57, 87, 3, 41, 1, 3, 4, 1, 3, 4…

阿帕奇跨域_阿帕奇骆驼遇见Redis

阿帕奇跨域键值商店的兰博基尼 Camel是最好的面包集成框架,在本文中,我将向您展示如何通过利用另一个出色的项目Redis使它更加强大。 Camel 2.11即将发布,具有许多新功能,错误修复和组件。 这些新组件中的几个是我创作的&#…