我刚读How costly is .NET reflection? 我对属性集进行了大量的反射调用,并且想知道我是否应该将所有PropertyInfo.SetProperty()转换为MethodInfos调用,以便我可以运行Delegate.CreateDelegate。
最后,如果我这样做,我假设我需要根据对象类型存储每个MethodInfo或Property,即使多个类型的属性名称和类型相同
FYI。我正在使用dotnet 2
添加----
我本身并没有处理严重的性能问题,但有时会有足够的延迟,如果它会产生影响,那么处理这个问题并不是一个坏主意。此外,90%以上的反射调用都是使用2个函数进行的,因此可以在整个应用程序中产生巨大的影响。
答案 0 :(得分:1)
正如约翰所说,你是回答这个问题的最佳人选。使用这两种方法在LINQPad中进行快速测试,看看您的使用是否证明了优化。但也许更好的优化(如果在您的情况下有意义)将尝试将您的反射转换为expression trees。
答案 1 :(得分:1)
它没有任何区别。成本是从程序集中检索元数据。无论是PropertyInfo还是反映setter或getter的MethodInfo都是无关紧要的。通过System.Diagnostics.Stopwatch来说服自己,证明就在布丁中。确保您第一次使用时间,之后很快就会因为缓存了元数据而停止。
答案 2 :(得分:0)
如果没有性能问题,请不要解决性能问题。