什么';更快:if语句还是条件运算符?(C#)

什么';更快:if语句还是条件运算符?(C#),c#,if-statement,conditional-operator,C#,If Statement,Conditional Operator,简单的问题(我想):这些代码中哪一段在C#中执行得更快 或 我猜第二个会更快,在某些情况下,因为它并不总是做作业,而第一个总是做作业 例如,当newSpeed时,我猜在某些情况下,第二个会更快,因为它并不总是做作业,而第一个总是做作业 例如,在这种情况下,当newSpeed时,编译器将获取三元行并创建一个if语句。。。所以它变成了完全一样的东西 链接:在本例中,编译器获取三元行并创建一个if语句。。。所以它变成了完全一样的东西 链接:正如justnS所说,三元运算符将在编译时转换为if语句,但如

简单的问题(我想):这些代码中哪一段在C#中执行得更快


我猜第二个会更快,在某些情况下,因为它并不总是做作业,而第一个总是做作业


例如,当
newSpeed时,我猜在某些情况下,第二个会更快,因为它并不总是做作业,而第一个总是做作业


例如,在这种情况下,当
newSpeed时,编译器将获取三元行并创建一个if语句。。。所以它变成了完全一样的东西


链接:

在本例中,编译器获取三元行并创建一个if语句。。。所以它变成了完全一样的东西


链接:

正如justnS所说,三元运算符将在编译时转换为if语句,但如果使用三元运算符,则需要if和else部分,而if语句没有else部分。 因此,如果您将代码运行几百万次或数十亿次,可能会有明显的不同。
但是,如果你构建一个普通的程序,这并不重要。

正如justnS所说,三元运算符将在编译时转换为if语句,但是如果你使用三元运算符,你将需要if和else部分,而if语句没有else部分。 因此,如果您将代码运行几百万次或数十亿次,可能会有明显的不同。

但是,如果你构建的是一个正常的程序,这并不重要。

这并不重要。杰夫·阿特伍德(Jeff Atwood)谈微优化:如果你编写一个测试项目来实际计时,你会花上2分钟的时间…@SLaks-你为什么这么说?因为每一个的时间都是如此之快,以至于哪一个更快是无关紧要的?@为什么他这么说,因为这看起来不像是一个微观优化,而更像是一个纳米优化。。。。一般来说,如果你想优化,你需要在何时何地进行优化。如果有人需要这样的优化,他/她最好从用另一种语言编写应用程序开始,这没关系。杰夫·阿特伍德(Jeff Atwood)谈微优化:如果你写一个测试项目来实际计时,你会花上2分钟的时间…@SLaks-你为什么这么说?因为每一个的时间都是如此之快,以至于哪一个更快是无关紧要的?@为什么他这么说,因为这看起来不像是一个微观优化,而更像是一个纳米优化。。。。一般来说,如果你想优化,你需要在何时何地进行优化。如果有人需要这样的优化,他/她最好从用另一种语言编写应用程序开始。但是,三元赋值只需转换成If-else语句的IL等价物,编译器可能会发现“else”块是多余的,并将其去掉。@KeithS听起来很可能。也许编译起来会更快;)但是,让我想知道,如果
newSpeed
是一个属性,它的setter中有其他代码,那么去掉它是错误的。例如,程序员可能只是为了触发其他代码而重置该值。(并不是说这是好的编程实践,只是一个例子,说明编译器可能对代码的运行方式产生不良影响。)编译器可以区分字段和属性。我并不是说它会优化这个,但它看起来很明显。@KeithS是的,我的意思是这个区别在问题中没有被区分出来,所以一个明确的答案可能是不可能的。这个,但同时,三元赋值被简单地转换成if-else语句的IL等价物,编译器很可能会发现“else”块是多余的,把它去掉。@KeithS听起来很可能。也许编译起来会更快;)但是,让我想知道,如果
newSpeed
是一个属性,它的setter中有其他代码,那么去掉它是错误的。例如,程序员可能只是为了触发其他代码而重置该值。(并不是说这是好的编程实践,只是一个例子,说明编译器可能对代码的运行方式产生不良影响。)编译器可以区分字段和属性。我并不是说它会优化这个,但它看起来很明显。@KeithS是的,我的意思是这个问题中没有区分,所以可能不可能有一个明确的答案。
newSpeed = newSpeed > maxSpeed ? maxSpeed : newSpeed;
if (newSpeed > maxSpeed)
{
    newSpeed = maxSpeed;
}