Adm*_*vić 6 c# generics reflection
我即将在服务器应用程序上编写一组方法,这些方法接收从TCP套接字接收的消息,对它们进行编码/解码,并加密/解密它们.
考虑消息被定义为特殊类型,每个都有自己的属性和总长度,我需要选择以下解决方案之一:1.制作使用泛型的方法,例如Encode<T>(...) where T : IMessage然后为每种类型的实现编码器/解码器消息,并有ResolveEncoder<T>将挑选编码器被通缉的消息或2.使用任何类型的消息的制作方法,只要它实现IMessage,比如Encode(IMessage message),用的System.Reflection决定一切,我需要了解它.
我对解决方案#2更感兴趣,因为它使我的代码缩小了30倍.但是,我担心不断反映属性是否会影响性能.现在由于时间限制完成项目,我无法真正"实验".
我将非常感谢任何个人经验或与基准测试相关的性能与任何一种解决方案的关系.
现在由于时间限制完成项目,我无法真正"实验".
那么你的真正约束不是性能,而是你可以在给定的时间约束中编码和测试和调试.假设你声称反射版本小30倍,听起来就像你应该倾向于那样.
但是,有五点:
PropertyInfos以及不是通过反射加载的内容来减轻其中的一部分.反射可以足够快。但需要正确执行。
反射性能 -
快速、轻便的功能
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
Run Code Online (Sandbox Code Playgroud)
昂贵的功能
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
Run Code Online (Sandbox Code Playgroud)
MethodInfo 可以加速 -提高性能反射,我应该考虑哪些替代方案
好的链接:
.NET 反射的成本有多高?
http://www.codeproject.com/Articles/18450/HyperDescriptor-Accelerated-dynamic-property-acces
| 归档时间: |
|
| 查看次数: |
1725 次 |
| 最近记录: |