今天有網友火晉地同窗進了CYQ.Data官方羣了,他正在折騰了一個各大ORM性能測試的比較的軟件,以下圖數據庫
折騰的種類也很多:編程
感受這軟件折騰的不錯~~~值的期待~~~框架
另外,他指出CYQ.Data 在他的軟件裏表現不佳~~~~函數
因此我要了他的測試實例看看是怎麼寫的測試代碼:性能
測試的過程,大致是開了N個線程,循環N次執行這樣的函數。測試
找到表現不佳的緣由,並解決:編碼
中間紛紛繞繞的講了一些各大ORM測試的實例編寫不一樣問題,不過有一句,倒引發了個人注意,說平均400毫秒左右。spa
因而我本地測試了一下,結果找出AOP讀取配置文件的一個小BUG,這個小BUG在每次new MAction時產生個被捕獲的小異常,這個小異常不影響使用,但會佔用2毫秒以上時間~~~線程
因此整個評測都是不斷的new MAction的狀況,就是大事件了,這就是總體評測都不佳的緣由了。code
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類型的比較,就等火晉地同窗之文章了。