Bro*_*ski 9 .net performance events delegates
我们正在办公室讨论如何解决某个特定问题,并提出了一个事件(没有双关语).由于滥用行为的反应是负面的,而且价格昂贵.
我理解滥用背后的问题,我知道它们只是一个特殊的多播委托,但考虑到最多只有一个监听器的情况,为什么在方法调用上使用事件被认为是"昂贵的"?
更新:
需要明确的是,这与任何特定实现无关,这是关于在方法调用上使用事件的成本的更一般性问题.
Phi*_*eck 18
在你的场景中测试它 - 我会想象很多很多因素都会影响到这一点,特别是当我们谈论一个方法/委托调用相对较低的相对成本时.
一个快速而简单的测试,发布版本不在调试器下,在4.0下编译为"任何cpu",并在64位Windows 7上运行:
另一个编辑:哎呀这是一个更好的结果.请参阅代码了解它的工作原理
10000000 direct reference calls : 0.011 s
10000000 calls through an interface : 0.037 s
10000000 invocations of an event : 0.067 s
10000000 calls through Action<int> : 0.035 s
Run Code Online (Sandbox Code Playgroud)
所以在一条直线"什么都不做试验"十万个呼叫,事件[添加0.474秒编辑一个上,只有0.026,现在很多但是更好的机器,仍然大约一倍]
我会更担心设计的正确性,而不是每1000万次呼叫半秒,除非你期望在短时间内做那么多次呼叫(在这种情况下,可能存在更基本的设计问题).
| 归档时间: |
|
| 查看次数: |
1378 次 |
| 最近记录: |