1. 反射序列化與動態編譯序列化。
比較結果:
------ test started: assembly: pixysoft.framework.configurations.dll ------
begin createobjectusingreflection
begin createobjectusingreflection
00:00:04.2031250
begin createobjectusingreflection
begin createobjectusingreflection
00:00:07.8593750
begin createobjectusingreflection
begin createobjectusingreflection
00:00:07.2187500
1 passed, 0 failed, 0 skipped, took 19.36 seconds (ad hoc).
使用c#提供的序列化最快,而反射序列化和動態編譯序列化差不多。證明了反射獲取資料在序列化中的比重並不大。
2. 反射序列化與完全動態建立序列化介面卡比較
所謂建立序列化介面卡,就是針對不同的物件,記憶體建立乙個針對的獲取資料的物件,這樣就不需要通過反射獲取屬性,而是等效於直接獲取。
------ test started: assembly: pixysoft.framework.configurations.dll ------
begin createobjectusingreflection
begin createobjectusingreflection
00:00:04.1406250
begin createobjectusingreflection
begin createobjectusingreflection
00:00:08
begin createobjectusingreflection
begin createobjectusingreflection
00:00:07.5468750
begin createobjectusingreflection
begin createobjectusingreflection
00:00:01.1250000
1 passed, 0 failed, 0 skipped, took 20.91 seconds (ad hoc).
可見如果是直接獲取值,速度最快。 提公升大概4倍(50000次迴圈。)
3. 比較imessagesink和直接獲取資料效能。
迴圈10w次,結果是:
begin createobjectusingreflection
00:00:11.2187500
begin createobjectusingreflection
begin createobjectusingreflection
00:00:00.0156250
提公升了接近1000倍。。。。暈倒了。
小測試C 中反射的效能
using system using system.collections.generic using system.linq using system.web using system.web.ui using system.web.ui.webcontrols using system.refl...
C 反射效能比較
int testtimes 10000000 測試次數,可自行調節看效果 region 傳統方式反射 console.writeline 一千萬次反射呼叫效能比較 trywatch.stop console.writeline testtimes.tostring times 傳統invoke方式反...
C 之 反射效能優化2
問題回顧 在上篇部落格中,我介紹了優化反射的第乙個步驟 用委託呼叫代替直接反射呼叫。然而,那只是反射優化過程的開始,因為新的問題出現了 如何儲存大量的委託?如果我們將委託儲存在字典集合中,會發現這種設計會浪費較多的執行時間,因為這種設計會引發三個新問題 1.的執行路徑變長了。2.字典查詢是有成本開銷...