一直據說dapper的數據處理能力很強. 我也一直很喜歡. 不過最近的一次壓力測試卻出乎個人意料....
很久沒寫東西,感受本身都不知道怎麼表達本身的意思了. 另外 此次的測試也是本身才開始的 . 也不知道測試思路和方式是否正確. 各位有什麼就來吐槽吐槽吧.
mysql
測試代碼下載sql
http://pan.baidu.com/s/1dDzuEi9 併發
2種操做db方式.app
1 純mysql操做db高併發
2 dapper方式操做db工具
測試方式1
一個用戶 運行代碼n次數,測試代碼執行消耗.在這個模式比較下. dapper 的 CURD操做和純粹的手寫sql效率差異基本不大. 下圖是幾個操做的對比.性能
能夠看到在這個狀況下dapper和手寫代碼性能差別不大. 甚至有優點. 可是能夠發現dapper其實在cpu運算消耗,gc回收,其實消耗了更多的資源.
固然我這裏測試的次數不高. 還能夠用更高的次數去壓看看. 我也嘗試過運行1w次 10w次的效率. 都是差別不大.測試
測試方式2
使用 loadrunner 壓力測試工具 ,多用戶多併發.spa
dapper 模擬300用戶請求, 隨機翻頁
原生態mysql模擬300用戶請求, 隨機翻頁
對比能夠看見
事務
對比項 (300併發) | dapper | 原生態mysql |
響應時間 單位s | 4.3 | 1.4 |
事務經過總數/s | 約108 | 310-350 |
2個關鍵的參數在用戶併發的狀況下, dapper 的響應大大減少. 在達到500併發的狀況下. 這個數值還會遞減至11s. 而且事物經過數也降低至50個/s內. 明顯不如手寫方式的.
經過測試個人問題是:
1. 在高併發下dapper的性能真的降低不少嗎, 仍是個人測試方法有問題?
2. 若是dapper在高併發下真的降低不少, 改如何去改進他的這一問題?
測試代碼下載
http://pan.baidu.com/s/1dDzuEi9