其他分享
首页 > 其他分享> > 由于StackTrace构造函数和获取方法名称,对性能的影响

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

作者:互联网

我的日志库中有这段代码

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

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

Picture from PerfView etl file

有谁知道我添加的代码对性能的影响吗?
如果是,还有其他方法可以获取方法名称而又不会对性能产生较大影响吗?

我目前正在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");
}

标签:performance,perfview,c
来源: https://codeday.me/bug/20191027/1946614.html