如何提高.NET反射性能,详细说明(分全给你

无聊的一个人啊 2011-05-06 04:53:56
如何提高.NET反射性能,如能给出满意详细的数据测试报告分就全给你
...全文
475 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 danjiewu 的回复:]

可以用FastInvoke,实际上也是通过emit来生成委托
比如说这样
C# code

public class ColumnInfo
{
private PropertyInfo property;
private FastInvokeHandler setValueHandle;
private FastIn……
[/Quote]

给我一个测试代码.可以的话就全给你100分
danjiewu 2011-05-12
  • 打赏
  • 举报
回复
可以用FastInvoke,实际上也是通过emit来生成委托
比如说这样

public class ColumnInfo
{
private PropertyInfo property;
private FastInvokeHandler setValueHandle;
private FastInvokeHandler getValueHandle;

public ColumnInfo(PropertyInfo property)
{
this.property = property;
if (property.CanWrite) this.setValueHandle = FastInvoke.GetMethodInvoker(property.GetSetMethod());
if (property.CanRead) this.getValueHandle = FastInvoke.GetMethodInvoker(property.GetGetMethod());
}

public virtual void SetValue(object target, object value)
{
setValueHandle(target, new object[] { value });
}

public virtual object GetValue(object target)
{
return getValueHandle(target, null);
}

实际性能比直接调用慢一些,已经很理想了
现在好像有几个开源的FastInvoke,我用的是http://www.codeproject.com/KB/cs/FastMethodInvoker.aspx这个
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 anbam 的回复:]
如果你使用的是.net2.0及以下版本,你可以使用emit 等动态编译的手法达到提升反射性能的目的
如果使用.net3.5则可以使用表达式树,来达到大幅提升反射性能的目的,效率能与直接调用构造函数相媲美
详细的实现方式,你可以上网搜
[/Quote]

表达式树。。。呃。。。这个还是比较头疼的东西
  • 打赏
  • 举报
回复
我需要具体的测试数据.
anbam 2011-05-11
  • 打赏
  • 举报
回复
如果你使用的是.net2.0及以下版本,你可以使用emit 等动态编译的手法达到提升反射性能的目的
如果使用.net3.5则可以使用表达式树,来达到大幅提升反射性能的目的,效率能与直接调用构造函数相媲美
详细的实现方式,你可以上网搜
shaojack 2011-05-10
  • 打赏
  • 举报
回复
程序的性能取决于“热点”部分,往往只有20%的代码被频繁执行。这意味着,即使优化剩下80%的代码性能,提高了一亿倍,程序也最多只能提高 20% 的性能
threenewbee 2011-05-07
  • 打赏
  • 举报
回复
反射慢么?很多初学者都这么认为。

事实上他们对性能问题根本没有正确的认识。

程序的性能取决于“热点”部分,往往只有20%的代码被频繁执行。这意味着,即使优化剩下80%的代码性能,提高了一亿倍,程序也最多只能提高 20% 的性能。

反射的确相比直接的调用要缓慢的多,但是反射成为程序的热区的可能性微乎其微,尤其是应用程序开发领域。
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 caozhy 的回复:]

反射慢么?很多初学者都这么认为。

事实上他们对性能问题根本没有正确的认识。

程序的性能取决于“热点”部分,往往只有20%的代码被频繁执行。这意味着,即使优化剩下80%的代码性能,提高了一亿倍,程序也最多只能提高 20% 的性能。

反射的确相比直接的调用要缓慢的多,但是反射成为程序的热区的可能性微乎其微,尤其是应用程序开发领域。
[/Quote]

问题在于我准备做一个ORM.
查出来的数据通过reader的方式读取并且塞入实体中.
如果List<Data>比较庞大的话,性能无人受得了的.这必然成为一个热区(如果数据的获取通过发射)
分不够的话,我把剩下的分给获胜者
子夜__ 2011-05-06
  • 打赏
  • 举报
回复
转换成接口 或者添加到委托能提高

DEMO
only_lonely 2011-05-06
  • 打赏
  • 举报
回复
最好的办法。。少反射。。
xuexiaodong2009 2011-05-06
  • 打赏
  • 举报
回复
反射能提高性能吗?只能提高可维护性把

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧