事件慢了多少?我编写了一个流式 XML 解析器(它可以处理开放式和不完整的文档),并且通过删除事件并使用接口来代替我获得了显着的速度提升。
有没有其他人有任何战争故事?
(我们不要在这里打开蠕虫的GC罐,我们都知道它坏了:))
事件慢了多少?我编写了一个流式 XML 解析器(它可以处理开放式和不完整的文档),并且通过删除事件并使用接口来代替我获得了显着的速度提升。
有没有其他人有任何战争故事?
(我们不要在这里打开蠕虫的GC罐,我们都知道它坏了:))
事件实际上只是代表。据我回忆,它们在 2.0 CLR 中变得更快了。我很惊讶用接口替换事件使您的代码显着更快 - 根据我的经验,它们非常快,如果您正在处理 XML,我不会期望事件调用成为瓶颈。
您的代码是否经常订阅和取消订阅事件?您是否有任何迹象表明解析特定文档时进行的事件调用次数?
事件肯定比直接的函数调用慢,我不能告诉你到底慢了多少,但很明显。您还可以将代表传递给“中间”立场。.NET 事件系统使用委托,但直接通过委托调用方法与整个事件系统相比仍然更快。
与虚拟方法调用相比,委托具有轻微的开销,因为它们是方法列表,因此理论上可以调用多个处理程序。
如果调用中不涉及反射,那么我认为开销可以忽略不计。假设当然可能是错误的。你有一个微型基准来证明这一点吗?