StackTrace 构造函数和获取方法名称对性能的影响

Performance impact due to StackTrace constructor and getting method name

我的日志库中有这段代码

var stackTrace = new StackTrace();
string operationName = stackTrace.GetFrame(1).GetMethod().Name;

根据我使用 PerfView 工具进行的性能分析,它显示为

有谁知道我添加的代码对性能的影响? 如果是的话,有没有其他方法可以在不对性能产生更大影响的情况下获取方法名称?

我目前 运行 它在 4 核机器上达到 1000 TPS。我看到它使用了我 CPU

的 15.1%

从 C# 5 开始,使用 [CallerMemberName]

让编译器将其放入调用站点会 绝对 更好
public void Log(string message, [CallerMemberName] caller = null)
{
}

然后:

public void DoSomething()
{
    logger.Log("A message");
}

... 由 C# 编译器转换为

public void DoSomething()
{
    logger.Log("A message", "DoSomething");
}