c# - MethodBase.GetCurrentMethod() 性能?

标签 c# performance reflection methodbase

我编写了一个日志类和一个函数,如下代码所示:

Log(System.Reflection.MethodBase methodBase, string message)

每次我记录一些东西时,我也会记录来自 methodBase.Name 和 methodBase.DeclaringType.Name 的类名。

我阅读了以下帖子 Using Get CurrentMethod我注意到这种方法很慢。

我应该使用 this.GetType() 而不是 System.Reflection.MethodBase 还是应该在我的日志中手动记录类/方法名称,例如Log("ClassName.MethodName", "log message)?什么是最佳实践?

最佳答案

这真的取决于。

如果您使用 this.GetType() 方法,您将丢失方法信息,但您将获得很大的性能提升(根据您的链接,显然是 1200 倍)。

如果您提供一个允许调用者提供字符串的接口(interface)(例如 Log("ClassName.MethodName", "log message"),您可能会获得更好的性能,但这会使您的 API不太友好(调用开发者必须提供类名和方法名)。

关于c# - MethodBase.GetCurrentMethod() 性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4885582/

相关文章:

c# - 从没有反射的c#源代码中提取属性

C# 等待和脉冲

c++ - 如何修复 STAMPS 挑战中的 SPOJ 时间限制超出错误?

scala - 模式匹配中的隐式 ClassTag

php - 如何使用 PHP 高效地将数百万个数据集插入 MySQL 数据库?

performance - 诊断两个 Web 服务器之间的慢速页面 'Waiting time'

.net - 使用反射将字符串转换为 Nullable<T>

c# - 为 IFormatProvider 提供编译时常量

c# - 将 IList 项添加到特定索引号

c# - 二维数组未按预期在 C# 中创建