如何进一步优化系统中的反射性能?

2026-05-27 08:260阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3159个文字,预计阅读时间需要13分钟。

如何进一步优化系统中的反射性能?

在前两篇博客中,我分别介绍了两种优化反射的方法:

1.Delegate:委托。

2.CodeDOM:动态代码生成。

这两种方法是截然不同的,性能差异也很大。今天的博客将着重比较它们的优缺点。

在前二篇博客中,我分别介绍了二种优化反射的方法:
1. Delegate:委托。
2. CodeDOM:动态代码生成。
这是二种截然不同的方法,性能的差距也很大。
今天的博客将着重比较它们的优缺点,以及给出它们的使用建议。

用Delegate优化反射的缺点

在评价委托方案时,我认为有必要细分一下委托方案:
1. 强类型委托,例如:Action<TTarget, TValue>
2. 弱类型委托,例如:Action<object, object>

它们的优点分别是:
强类型委托:速度快,已经最接近直接调用的性能,然而它的缺点是 不通用。
弱类型委托:比较通用,且经过一些代码封装后,使用方便,但是 封装后的性能会变差。

用Delegate优化反射的优点

优点有二个:
1. 实现简单,不管是使用Emit, ExpressionTree还是CreateDelegate,代码量都不大。
2. 方法通用,使用弱类型委托,我们可以封装出很容易使用的API,且适用于任何项目。

阅读全文

本文共计3159个文字,预计阅读时间需要13分钟。

如何进一步优化系统中的反射性能?

在前两篇博客中,我分别介绍了两种优化反射的方法:

1.Delegate:委托。

2.CodeDOM:动态代码生成。

这两种方法是截然不同的,性能差异也很大。今天的博客将着重比较它们的优缺点。

在前二篇博客中,我分别介绍了二种优化反射的方法:
1. Delegate:委托。
2. CodeDOM:动态代码生成。
这是二种截然不同的方法,性能的差距也很大。
今天的博客将着重比较它们的优缺点,以及给出它们的使用建议。

用Delegate优化反射的缺点

在评价委托方案时,我认为有必要细分一下委托方案:
1. 强类型委托,例如:Action<TTarget, TValue>
2. 弱类型委托,例如:Action<object, object>

它们的优点分别是:
强类型委托:速度快,已经最接近直接调用的性能,然而它的缺点是 不通用。
弱类型委托:比较通用,且经过一些代码封装后,使用方便,但是 封装后的性能会变差。

用Delegate优化反射的优点

优点有二个:
1. 实现简单,不管是使用Emit, ExpressionTree还是CreateDelegate,代码量都不大。
2. 方法通用,使用弱类型委托,我们可以封装出很容易使用的API,且适用于任何项目。

阅读全文