簡體   English   中英

C# 堆棧幀、大括號和性能

[英]C# stack frames, curly brackets and performance

大括號是否總是暗示堆棧框架。 示例 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 年前的學位,為此道歉]

當我寫這個時:

int x = 4;
int y = 3;
Console.WriteLine(x + y);
Console.WriteLine(x);

或這個:

int x = 4;
{
    int y = 3;
    Console.WriteLine(x + y);
}
Console.WriteLine(x);

我仍然在 IL 中得到這個:

.maxstack 2
.locals init (
    [0] int32 x,
    [1] int32 y
)

沒有額外的堆棧幀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM