发布Disruptor 3.0.0
生活随笔
收集整理的這篇文章主要介紹了
发布Disruptor 3.0.0
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我決定對整個版本的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):對于他的許多有用想法,尤其是圍繞支持多個生產者的算法。
翻譯自: https://www.javacodegeeks.com/2013/04/release-of-disruptor-3-0-0.html
總結
以上是生活随笔為你收集整理的发布Disruptor 3.0.0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 约法三章什么意思解释(成语约法三章出自哪
- 下一篇: vivos12pro值得入手吗(vivo