c# – System.Reflection vs Generics – 性能

前端之家收集整理的这篇文章主要介绍了c# – System.Reflection vs Generics – 性能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我即将在服务器应用程序上编写一组方法,这些方法接收从TCP套接字接收的消息,对它们进行编码/解码,并加密/解密它们.

考虑将消息定义为特殊类型,每个消息都有自己的属性集和总长度,我需要选择以下解决方案之一:
1.制作使用泛型的方法,例如Encode< T>(…),其中T:IMessage然后为每种类型的消息实现编码器/解码器并且具有ResolveEncoder< T>.那将为想要的消息选择编码器
要么
2.创建使用任何类型的消息的方法,只要它实现IMessage,例如Encode(IMessage消息),并使用System.Reflection来确定我需要了解的所有内容.

我对解决方案#2更感兴趣,因为它使我的代码缩小了30倍.但是,我担心不断反映属性是否会影响性能.现在由于时间限制完成项目,我无法真正“实验”.

我将非常感谢任何个人经验或与基准测试相关的性能与任何一种解决方案的关系.

解决方法

反思可以足够快.但需要正确实施.

反思表现 –

快速和轻便的功能

typeof
Object.GetType
typeof == Object.GetType
Type equivalence APIs (including typehandle operator overloads)
get_Module
get_MemberType
Some of the IsXX predicate APIs
New token/handle resolution APIs in the .NET Framework 2.0

昂贵的功能

GetXX  APIs (MethodInfo,PropertyInfo,FieldInfo,and so on)
GetCustomAttributes
Type.InvokeMember
Invoke APIs (MethodInfo.Invoke,FieldInfo.GetValue,and so on)
get_Name (Name property)
Activator.CreateInstance

Source – Dodge Common Performance Pitfalls to Craft Speedy Applications

MethodInfo可以加速 – Improving performance reflection,what alternatives should I consider

好的链接
How costly is .NET reflection?
http://www.codeproject.com/Articles/18450/HyperDescriptor-Accelerated-dynamic-property-acces

猜你在找的C#相关文章