虚拟vs口poco,什么是更快吗?
题
我保持一个应用程序,它已经设计这样的:
messy code --abuses--> simplePoco (POCO data capsule)
数据胶囊是一个简单的类有很多的吸气,并制定者(性)它使用一个DI框架和一贯使用国际奥委会的容器提供实例的数据胶囊的(幸运我!)。
问题是,我要引入一个"变通"机制成的 simplePoco
messy code --abuses--> simplePoco
|
V
changes logger,
status monitor
(I wanna know about changes)
我有几个选择:
介绍一个
IPoco
和修改的杂乱的代码,这样我就可以有simplePoco
速度或notifyingPoco
当我想改变通知(有选择性地缓慢的)?或者...让一切虚拟的滚是我自己定制
notifyingPoco
舱的顶上simplePoco
(甚至速度较慢)?设计图案,我不知道吗?
它是一个客户/服务器系统,但我只是修改该服务器的一部分,所以如果可能的话,我宁愿 不 触摸的杂乱的代码或客户代码(有序列化程序和反思和可怕的忍者的东西...)为不小心打破任何东西。
将使用一个接口,可以防止JIT从内联的呼吸气/器?
什么是最好的方法去考虑,simplePoco实例 严重 滥用?
解决方案
任何种类的虚拟电话(无论是口或直接在一个类 所有 接的电话都是虚拟的!) 不会可通过内联CLR JIT。这就是说,接电话是速度稍慢,因为他们总是必须通过潜在-远程/代理路径,并且因为它们必须转移 this
-指点在开始类在进入身体的功能。虚拟的电话直接上级成员从来没有做移位,并且,除非该类是来自 MarshalByRefObject
, ,不要打的代理检查。
这就是说,性能差别之间这两个都是很轻微的,所以你也许应该忽略他们,并侧重于清洁的设计和易于实施,而不是。
不隶属于 StackOverflow