C 反射效能測試

2021-09-05 23:52:02 字數 1560 閱讀 5957

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.字典查詢是有成本開銷...