为什么大括号在C#代码上要花时间?

为什么大括号在C#代码上要花时间?,c#,performance,profiling,ants,C#,Performance,Profiling,Ants,我正在使用Ants Performance Profiler 8.5,当我看到每行代码运行的时间时,我注意到大括号也需要时间 这是一幅图像,您可以在大括号左侧看到时间(毫秒): 有时我会有更多的时间,比如5毫秒 为什么呢?是垃圾收集吗?定义方法时,编译器知道该方法范围内的一组参数,称为。这暗示了要为该方法分配的内存量 这可能是CLR分配额外时间内存的原因 添加更多大括号实际上不会向maxstack添加更多参数。它适用于整个方法。作用域更像是一个逻辑分组,而不是由CLR实现以释放内存 关于GC的

我正在使用Ants Performance Profiler 8.5,当我看到每行代码运行的时间时,我注意到大括号也需要时间

这是一幅图像,您可以在大括号左侧看到时间(毫秒):

有时我会有更多的时间,比如5毫秒


为什么呢?是垃圾收集吗?

定义方法时,编译器知道该方法范围内的一组参数,称为。这暗示了要为该方法分配的内存量

这可能是CLR分配额外时间内存的原因

添加更多大括号实际上不会向
maxstack
添加更多参数。它适用于整个方法。作用域更像是一个逻辑分组,而不是由CLR实现以释放内存


关于GC的问题,我不认为这是问题的根本原因。需要时,GC由单独的线程运行。可能是GC,但我严重怀疑你的情况。

我认为你误读了它。。。返回需要0毫秒?虽然这可能是垃圾收集(对于临时变量声明),但看起来更可能是时间偏移了。文档怎么说?我只能猜测它将处理堆栈上的参数,准备堆上的局部变量,并在最后处理out参数和清理?分析器只能测量从C#代码生成的机器代码所花费的时间。从机器代码到C代码的映射并不总是完美的。特别是当您评测优化的代码时,就像您一直应该做的那样。在花括号处,为该方法设置堆栈框架并再次将其拆下需要开销。这最多需要几纳秒,乘以调用该方法的次数。测量5毫秒是过度的,应该被视为“实验性错误”。@Hans这听起来像是我的答案。这是一个暗示,我无法解释5毫秒。