gpt4 book ai didi

c# - 用 AND 替换嵌套的 if 语句

转载 作者:太空狗 更新时间:2023-10-29 22:11:01 25 4
gpt4 key购买 nike

我想知道嵌套 if 是否比 AND 语句更好。我有一个循环很多次,所以我在考虑更快的执行速度。下面是与我的代码具有相同逻辑的代码。嵌套的 if 语句在循环内。

   for ( int i = 0; i < array.length; i++)
{
// do stuff
if (x == 5)
{
if (y == 3)
{
// do stuff
}
}
}

如果我用这个 And STATEMENT 替换嵌套的 if,我的代码会更快吗?

     if ((x == 5) && (y == 3))
// do stuff

我读过这个link但我没有找到答案。我是一名学生,仍在学习中,感谢所有反馈!

最佳答案

不,它在性能上不会有显着差异,可读性可能存在差异。

当使用优化/发布编译时,这两个将生成相同的 IL(使用 LINQPad 测试):

IL_0000:  ldc.i4.5    
IL_0001: stloc.0
IL_0002: ldc.i4.s 0A
IL_0004: stloc.1
IL_0005: ldloc.0
IL_0006: ldc.i4.5
IL_0007: bne.un.s IL_000D
IL_0009: ldloc.1
IL_000A: ldc.i4.3
IL_000B: pop

即使没有优化,差异也不那么显着:

嵌套语句:

IL_0001:  ldc.i4.5    
IL_0002: stloc.0
IL_0003: ldc.i4.s 0A
IL_0005: stloc.1
IL_0006: ldloc.0
IL_0007: ldc.i4.5
IL_0008: ceq
IL_000A: ldc.i4.0
IL_000B: ceq
IL_000D: stloc.2
IL_000E: ldloc.2
IL_000F: brtrue.s IL_0020
IL_0011: nop
IL_0012: ldloc.1
IL_0013: ldc.i4.3
IL_0014: ceq
IL_0016: ldc.i4.0
IL_0017: ceq
IL_0019: stloc.2
IL_001A: ldloc.2
IL_001B: brtrue.s IL_001F
IL_001D: nop
IL_001E: nop

非嵌套语句:

IL_0001:  ldc.i4.5    
IL_0002: stloc.0
IL_0003: ldc.i4.s 0A
IL_0005: stloc.1
IL_0006: ldloc.0
IL_0007: ldc.i4.5
IL_0008: bne.un.s IL_0013
IL_000A: ldloc.1
IL_000B: ldc.i4.3
IL_000C: ceq
IL_000E: ldc.i4.0
IL_000F: ceq
IL_0011: br.s IL_0014
IL_0013: ldc.i4.1
IL_0014: nop
IL_0015: stloc.2
IL_0016: ldloc.2
IL_0017: brtrue.s IL_001B
IL_0019: nop

关于c# - 用 AND 替换嵌套的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11351214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com