使用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