【发布时间】:2010-12-06 17:52:23
【问题描述】:
我正在做一些构建后的 CIL 编织,将 CIL 添加到程序集中的所有方法(换句话说,大量方法)。每个方法都会检查特定值是否为空。示例(C# Reflector 版本的 CIL 代码):
// CIL woven region start
if (MyType.Something == null) {
// ... some new stuff
}
// CIL woven region end
将 MyType.Something 作为属性与字段对性能有何影响?我知道我已经读过 C# 编译器执行特殊优化,在这种情况下应该没有性能影响......但是在直接 CIL 代码(没有 C# 编译器)的情况下呢......?或者是允许这些优化的 JIT 编译器(所以直接 CIL 代码仍然有好处)?
为静态属性的访问器发出 OpCode.Call 的性能是否会比 Ldsfld 差(请记住,由于程序集中的每个方法都是编织的,因此需要数万次调用)?
谢谢。
【问题讨论】:
-
您能解释一下您为什么决定实施它吗?
标签: c# reflection reflection.emit