花括号会影响C#中的性能吗?

花括号会影响C#中的性能吗?,c#,C#,对于单行if语句,我自己总是更喜欢使用大括号。 像 这句话可以写成 if(condition) statement; 或 我在某某论坛上搜索过,大多数人更喜欢第一种选择。我知道这对运行时性能没有影响。 在编译时,第一种方法是否有任何性能因素。NET framework或CLR如何处理像if或if elseif这样的决策语句?下一个选项(第二个和第三个)是否有任何增强的性能?可能差别可以忽略不计,但我想知道编译器是如何处理这种情况的。不。在编译器完成工作后。代码是完全相同的它不是 C#编译成CI

对于单行if语句,我自己总是更喜欢使用大括号。 像

这句话可以写成

if(condition)
statement;

我在某某论坛上搜索过,大多数人更喜欢第一种选择。我知道这对运行时性能没有影响。
在编译时,第一种方法是否有任何性能因素。NET framework或CLR如何处理像if或if elseif这样的决策语句?下一个选项(第二个和第三个)是否有任何增强的性能?可能差别可以忽略不计,但我想知道编译器是如何处理这种情况的。

不。在编译器完成工作后。代码是完全相同的

它不是

C#编译成CIL(公共中间语言),这是CLR的“汇编语言”(类似于Java世界中的“字节码”)

在CIL中,没有“支架”的概念。If-Else代码块使用“branch”命令在CIL中表示,这类似于条件跳转。例如,如果堆栈上的最新值相等,则后跟标签名称的“brc”将跳转到标签


因此,不管你是否使用大括号,它都会在生成的CIL代码中以相同的方式表示。

没有区别……所有这些的IL都是相同的。从低层次的角度来看,没有括号,只有条件跳转。如果这些片段的编译时间有差异,那么它的数量级为纳秒。因此,即使您选择较慢的一个,您也必须编写数百万行代码才能看到1毫秒的微小差异。关注一些更重要的东西,比如哪个对您和您的团队来说更可读……这就是为什么我们以最可读的方式编写代码(使用缩进、大括号、空行、注释)——编译器将生成相同的代码。然而,对于解释器,系统需要时间来理解这与此无关(比如说,额外的花括号);在过去的好时代,当计算机有64k RAM和1MHz CPU时,这曾经是一个问题;)C#编译器遵循以下步骤。根据语法,这两个是相同的语法元素,
if语句
,解析为
if(布尔表达式)嵌入语句
。只是在第一种情况下,
embedded statement
block
,而在第二种情况下是另一种
*-语句。编译时间呢?我想知道这一点。我不确定,但我想他对任何事情都没有任何影响,除了在不使用花括号时在语句中添加行的已知风险。问题是关于编译时间,而不是运行时性能。他问“.NET framework或CLR如何处理像if或if elseif这样的决策语句”-我回答了关于CLR的问题。
if(condition)
statement;
if(condition) statement;