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

前端之家收集整理的这篇文章主要介绍了.net – 在(据称)高性能代码中使用GetCurrentMethod前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
出于记录目的,我们的应用程序中的一些方法包括以下行:
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 |发布|没有调试器]

原文链接:https://www.f2er.com/vb/255268.html

猜你在找的VB相关文章