表单赋值到实体类对象的通用方法的性能问题
现在参与的项目是分布式的,使用到了thrift框架在客户端和服务端之间传递并返回数据,对性能有一定要求,碰到了这样一个需求,新增订单时,要提交表单,订单表中的字段比较多,有十多个,网上找到个这样的方法:用反射来赋值,可以简化操作,代码如下:
/// <summary>
/// 将表单赋予对对象
/// </summary>
/// <param name="t">实体对象</param>
/// <param name="form">表单集合</param>
public static void GetValue(T t, NameValueCollection form)
{
Type type = t.GetType();
PropertyInfo[] pi = type.GetProperties();
foreach (PropertyInfo p in pi)
{
if (form[p.Name] != null)
{
p.SetValue(t, Convert.ChangeType(form[p.Name], p.PropertyType), null);
}
}
}
我想问的是这个方法用到了反射,在数据量大时会不会影响到性能? 如何来测试它的性能?能否用某种软件来测试性能?求指点一二 多谢
------解决方案--------------------感觉在PropertyInfo[]加缓存貌似也没多大用处
LZ可以看下这篇文章 使用动态编译代替反射,性能有很大提升的
http://www.cnblogs.com/zc22/archive/2010/06/01/1749459.html
不过建议如果能直接赋值 还是自己赋值的好
------解决方案--------------------对性能有要求不要用反射,用表达式树编译的本地代码:
关键代码类似:
http://bbs.csdn.net/topics/390600500?page=1#post-395653832