加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

.net – 在(据称)高性能代码中使用GetCurrentMethod

发布时间:2020-12-17 00:22:34 所属栏目:大数据 来源:网络整理
导读:出于记录目的,我们的应用程序中的一些方法包括以下行: Dim Log As ILog = GetLog(Reflection.MethodBase.GetCurrentMethod().DeclaringType) 我有可能被描述为对反思的非理性恐惧,我试图控制它.但是,在每秒执行一百次的方法中,这样的调用会引起我的注意.我
出于记录目的,我们的应用程序中的一些方法包括以下行:
Dim Log As ILog = GetLog(Reflection.MethodBase.GetCurrentMethod().DeclaringType)

我有可能被描述为对反思的非理性恐惧,我试图控制它.但是,在每秒执行一百次的方法中,这样的调用会引起我的注意.我不太了解反思;但是从简要介绍文档来看,我认为我可以用以下内容替换以下内容:

Dim Log As ILog = GetLog(Me.GetType())

我的问题有三方面:

> Me.GetType()实际上是否返回与GetCurrentMethod()相同的Type.DeclaringType?
> Me.GetType()实际上做了什么不同于GetCurrentMethod().DeclaringType,还是在幕后做同样的事情?
>我根本不应该担心这个吗?性能在此应用中至关重要;该程序运行良好,但我们的业务性质是这样的,如果我们可以在这里和那里削减甚至几微秒,这是有用的.

在你的情况下this.GetType()将产生与MethodBase.GetCurrentMethod()相同的结果.DeclaringType可以.有关两个调用将返回不同类型的情况,请参阅JaredPar的答案.

在一般情况下,公开成员的类型(通过MemberInfo.ReflectedType属性获得)和声明成员的类型(通过MemberInfo.DeclaringType属性获得)可能不同.

UPDATE

我只是使用C#来描述它 – this.GetType()每次调用需要2.5 ns,而MethodBase.GetCurrentMethod().每次调用需要2490 ns的DeclaringType – 所以你的速度大约是因子1200.

[Intel Core 2 6400 2.13 GHz | 3.5 GiB | WinXP Pro SP2 | .NET FX 3.5 SP1 |发布|没有调试器]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读