[英]Why Reactive programming application( vert.x) is faster than single thread lock free , no-blocking java application?
我最近使用vert.x(基於java)測試了一個簡單的HTTP服務器我對http服務器的吞吐量和api延遲感到驚訝,它非常快。
http-server的同一段代碼在java應用程序上運行,具有單線程,無鎖和無阻塞。 性能不到vert.x的1/3。
我不明白的是,vert.x優於非反應式Java應用程序的核心技術差異是什么?
統計:
使用Jmeter進行測試。 jmeter和應用程序都在相同的機器上運行,消耗cpu 25-50%,app消耗cpu 20-30%。 所有測試均進行5分鍾。
具有1個客戶端線程轟炸請求的Jmeter(整個:每秒3474):
同時具有50個客戶端線程轟炸請求的Jmeter(整個:每秒4285):
這有很多原因。
首先,您將單線程裸Java應用程序與Vertx進行比較,后者實際上是多線程的 。
第二個是如何使用無鎖數據結構。 無鎖並不一定意味着“在所有條件下都更快” 。
第三,我認為這是重點,一些最好的紅帽開發人員為Vertx開發做出了貢獻。 例如,您可以檢查源代碼並查看一些非常智能的緩沖區用法。 從第一個鏡頭開始,一個示例項目的表現要超過這樣一個框架,這有點太多了。 如果您對某些替代方案感興趣,請檢查Rapidoid性能,該性能應與Vertx相當。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.