使用C#属性时的性能问题?

就我所知,编译时生成的属性(否则不可能通过relflection加载属性)。 无论如何,在某些情况下,属性可能会导致运行时的性能问题?


无论如何,在某些情况下,属性可能会导致运行时的性能问题?

只有当你的程序过度地寻找代码中的属性时才会这样。

属性仅在有东西正在查找时才有用。 如果你用[MyAwsomeAttribute]装饰你的班级,并且没有任何东西正在寻找它,那么就不会有性能差异

性能差异取决于您拥有多少属性; 如果被发现; 以及执行违规属性所花费的时间(假设它具有这种能力,许多属性都是纯粹的元数据)。

很好的例子是WCF自定义行为属性及其详细的和潜在复杂的实现方法。


(为了测试MickyD的答案)

即使这个代码具有非常邪恶的属性,仍然没有性能影响,因为该属性不会被构造。

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(new Foo().ToString());
        Console.ReadLine();
    }
}

[ThrowExceptionException]
public class Foo
{
}

public class ThrowExceptionAttribute : Attribute
{
    public ThrowExceptionAttribute()
    {
        throw new NotImplementedException();
    }
}

当然,如果你确实反映了这个属性,你可以获得性能影响。 但是那么你的问题就变成了:“运行任意代码是否会影响性能?”。

链接地址: http://www.djcxy.com/p/39821.html

上一篇: Performance issues when using C# attributes?

下一篇: Mysterious error running makepri for Windows Universal App's Desktop Bridge