今天有網友火晉地同學進了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類型的比較,就等火晉地同學之文章了。
