我的日志库中有这段代码
var stackTrace = new StackTrace();
string operationName = stackTrace.GetFrame(1).GetMethod().Name;
Run Code Online (Sandbox Code Playgroud)
根据我使用 PerfView 工具进行的性能分析,它显示为
有谁知道我添加的代码对性能的影响?如果是,是否有其他方法可以获取方法名称而不会对性能产生更大的影响?
我目前在 4 核机器上以 1000 TPS 的速度运行它。我发现它使用了我的 CPU 的 15.1%
如何从当前位置构造堆栈跟踪?
在.NET 4.5中使用此解决方案:
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(true);
for (int i = 0; i < stackTrace.FrameCount; ++i)
{
System.Diagnostics.StackFrame frame = stackTrace.GetFrame(i);
MethodBase callerMethod = frame.GetMethod();
...
}
Run Code Online (Sandbox Code Playgroud)
但是.NET Core中的解决方案是什么?构造public StackTrace(bool fNeedFileInfo)函数不再存在.