drools dmn_Drools DMN最新开源引擎性能改进
drools dmn
我們一直在尋求改善Drools DMN開源引擎的性能。 我們最近審查了DMN用例,其中輸入數(shù)據(jù)節(jié)點(diǎn)的實(shí)際輸入總體有所不同。 這突出顯示了引擎的次佳性能,我們?cè)谧钚掳姹局袑?duì)此進(jìn)行了改進(jìn)。 我想分享我們的發(fā)現(xiàn)!
基準(zhǔn)制定
當(dāng)我們開始為此用例運(yùn)行一個(gè)支持基準(zhǔn)測(cè)試時(shí),尤其是在調(diào)查具有稀疏填充的輸入數(shù)據(jù)節(jié)點(diǎn)的大型DMN模型的場(chǎng)景時(shí),我們注意到了一些奇怪的結(jié)果:當(dāng)記錄消息時(shí),火焰圖數(shù)據(jù)突出顯示了性能的嚴(yán)重下降,這非常消耗與應(yīng)用邏輯本身相比,花費(fèi)了大量時(shí)間。
該火焰圖特別強(qiáng)調(diào)了堆棧跟蹤合成(由測(cè)井框架人為誘導(dǎo))消耗了大量時(shí)間。 在這種情況下,糾正措施是調(diào)整日志記錄配置以避免此問題。 具體來說,我們禁用了日志記錄框架的一項(xiàng)功能,該功能在調(diào)試活動(dòng)期間非常方便,從而可以快速定位原始的調(diào)用類和方法:不幸的是,此功能的代價(jià)是合成堆棧跟蹤,該跟蹤最初污染了基準(zhǔn)測(cè)試結(jié)果。 從這里學(xué)到的教訓(xùn):請(qǐng)始終先檢查非功能性需求是否真的掩蓋了真正的問題!
在繼續(xù)更詳細(xì)地研究用例之前,這是必要且可行的步驟。
改善表現(xiàn)
繼續(xù)并專注于DMN優(yōu)化,我們專門開發(fā)了一個(gè)通用性很強(qiáng)的基準(zhǔn),同時(shí)也重點(diǎn)介紹了已提供給我們的用例。 該基準(zhǔn)包含一個(gè)DMN模型,其中包含許多要評(píng)估的決策節(jié)點(diǎn)(500個(gè))。 另一個(gè)參數(shù)控制輸入數(shù)據(jù)節(jié)點(diǎn)的稀疏性以進(jìn)行評(píng)估; 范圍從值1(填充所有輸入)到值2(僅填充兩個(gè)輸入中的一個(gè)),等等。
事實(shí)證明,該特定基準(zhǔn)是突出一些潛在改進(jìn)的非常有用的工具。
將比較基準(zhǔn)設(shè)置為Drools版本7.23.0。最終,使用DROOLS-4204實(shí)現(xiàn)的第一個(gè)優(yōu)化專注于在評(píng)估FEEL表達(dá)式的同時(shí)改善上下文處理,并證明可提供約3倍的改進(jìn),而使用DROOLS-4266進(jìn)行的進(jìn)一步優(yōu)化則專注于特定決策表輸入子句的用例表明,在DROOLS-4204的基礎(chǔ)上,附加的?2倍改進(jìn)。
我們還在下圖中收集了這些度量。
該圖突出顯示了當(dāng)稀疏因子等于1時(shí)(填充所有輸入時(shí))的復(fù)合改進(jìn); 這是一個(gè)非常重要的結(jié)果,因?yàn)閷?shí)際上它確實(shí)代表了原始用例中的主要 “快樂路徑”場(chǎng)景。
換句話說,與在相同的用例上運(yùn)行相比,我們實(shí)現(xiàn)了約6倍的改進(jìn)
7.23.0。最終版 我在這里學(xué)到的教訓(xùn)是,在可能的情況下,始終努力進(jìn)行此類復(fù)合改進(jìn),因?yàn)樗鼈兇_實(shí)可以彼此疊加,以獲得更大的效果!
為了完整起見,我們使用以下度量重復(fù)分析,其稀疏因子等于2(實(shí)際上每2個(gè)輸入填充1個(gè))和50個(gè)(實(shí)際上每50個(gè)輸入填充1個(gè)),并進(jìn)行以下測(cè)量:
結(jié)果表明,對(duì)于等于2的稀疏因子,優(yōu)化也很重要,但隨著該因子的增加,相關(guān)的改進(jìn)并不明顯-這是可以預(yù)期的,因?yàn)闆Q策節(jié)點(diǎn)評(píng)估對(duì)整體執(zhí)行邏輯的影響現(xiàn)在變得不那么重要了。
為了完整起見,還對(duì)包含多個(gè)規(guī)則行的單個(gè)決策表使用了另一個(gè)已經(jīng)存在的基準(zhǔn)進(jìn)行分析:
結(jié)果表明,這些代碼更改從整體上來看仍然可以提供相關(guān)的改進(jìn); 雖然顯然不相同幅度為原來使用-情況。 這是另一項(xiàng)重要檢查,以確保這些改進(jìn)不適合特定用例。
結(jié)論
以Drools版本7.23.0.Final為基準(zhǔn),以及包含DMN模型和許多待評(píng)估決策節(jié)點(diǎn)的參考基準(zhǔn),我們實(shí)施了多項(xiàng)優(yōu)化,這些優(yōu)化一旦組合在一起,就可以使該特定項(xiàng)目的總速度提高約6倍用例!
我希望這是一篇有趣的文章,以強(qiáng)調(diào)要獲得更好性能的一些方面; 讓我們知道您的想法和反饋。
您現(xiàn)在已經(jīng)可以從Drools的最新版本中受益于這些Kie DMN開源引擎的改進(jìn)!
翻譯自: https://www.javacodegeeks.com/2019/08/drools-dmn-performance-improvements.html
drools dmn
總結(jié)
以上是生活随笔為你收集整理的drools dmn_Drools DMN最新开源引擎性能改进的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: b站关闭竖屏模式
- 下一篇: 自我审视记录本_春天重新审视战略模式