【问题标题】:C# stack frames, curly brackets and performanceC# 堆栈帧、大括号和性能
【发布时间】:2022-06-10 17:37:18
【问题描述】:

大括号是否总是暗示堆栈帧。示例 1:

{
    int b;
}

显然会创建一个堆栈帧。那么例子2:

<some code>
{
    int a;
    <some more code>
}
<yet more code>

我假设会有一个堆栈框架来反映a 的范围。

示例 3:

for (i=0; i<10; i++)
{
    <single statement of code>
}

是否为i 的范围创建了堆栈帧?

示例 4:

在代码方面使用它是否更有效:

for (i=0; i<10; i++)
    <single statement of code>

一般来说,我的问题是编译器是否总是在使用花括号时创建堆栈帧,还是使用智能并仅在需要时创建它们?

[如果我对堆栈帧的了解似乎有点简单,我将回到 30 年前的学位,对此深表歉意]

【问题讨论】:

  • .NET 调用堆栈适用于方法调用。至于效率,3 和 4 之间的区别在于 IL 中的几个额外的 nop 调用。 SharpLab.

标签: c# scope compiler-optimization stack-frame


猜你喜欢
  • 2020-04-20
  • 2021-10-24
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
  • 2014-02-25
相关资源
最近更新 更多