由于StackTrace构造函数和获取方法名称,对性能的影响
作者:互联网
我的日志库中有这段代码
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");
}
标签:performance,perfview,c 来源: https://codeday.me/bug/20191027/1946614.html