CYQ.Data 批量添加數據性能測試(每秒千、萬)


今天有網友火晉地同學進了CYQ.Data官方群了,他正在折騰了一個各大ORM性能測試的比較的軟件,如下圖

折騰的種類也不少:

 

感覺這軟件折騰的不錯~~~值的期待~~~

另外,他指出CYQ.Data 在他的軟件里表現不佳~~~~

所以我要了他的測試實例看看是怎么寫的測試代碼:

測試的過程,大體是開了N個線程,循環N次執行這樣的函數。

找到表現不佳的原因,並解決:

中間紛紛繞繞的講了一些各大ORM測試的實例編寫不同問題,不過有一句,倒引起了我的注意,說平均400毫秒左右。

於是我本地測試了一下,結果找出AOP讀取配置文件的一個小BUG,這個小BUG在每次new MAction時產生個被捕獲的小異常,這個小異常不影響使用,但會占用2毫秒以上時間~~~

所以整個評測都是不斷的new MAction的情況,就是大事件了,這就是整體評測都不佳的原因了。

 

OK,修正這個小Bug后,下面來演示一下批量插入功能:

看看1萬條數據,插入需要多長時間:

數據庫為MSSQL 2005 CPU為i3,4G內存,數據表Consumer共4個字段。

每個示例前后都會truncate table  Consumer;

 

第一種編碼方法:通過不斷的new MAction來實現插入,1萬條用了6秒多,平均每秒插入1600條左右:

 

 

 

 

第二種編碼方法:把for往里面移動,先不開啟事務,1萬條用了4秒多,平均每秒插入2500條左右

 


 

 

第三種編碼碼方式,開啟啟事務呢,1萬條用了2秒多,平均每秒插入4000條左右:

 

 

 

第四種編碼方式:使用MDataTable的實現批量插入,1萬條用了0.6秒多,平均每秒插入2萬條左右:

 

 

事實上,時間是花在數據的實體轉Table的過程,如果把這一塊時間分出,只計算數據庫批量插入的時間:

10萬條用了0.8秒多,平均每秒插入10萬條以上:

 

 

 

總結:

今天的測試,僅是做為樣式供參考,不同的編碼方式,實際上產生的性能點不同的,根據項目需要編程才是重點。

從07年開始寫ORM框架,大大小小的框架寫過很種風格,但真正的精華作品,卻僅此一種。

另外其它多種ORM類型的比較,就等火晉地同學之文章了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM