C# “哪一个在性能上更有效?”;x>=a「;或;x>;a | x==a;?

C# “哪一个在性能上更有效?”;x>=a「;或;x>;a | x==a;?,c#,C#,我不知道下面的内部实现。简而言之,哪一个性能更有效,x>=a还是x>a | | x==a 编辑1: 让我们将其分为两种情况: 当a和x属于同一类型时 当a和x不在同一类型时 严格地说,他们是不平等的。操作员可能会超负荷执行完全不同的操作。只有在功能相同的情况下,才与他们的表现相关 它们在功能上也不同,在第二个示例中,表达式x和a被计算多次,而不是一次。(值得一提的是。)如果这些表达式引起副作用,或者计算成本很高,那么这可能与其功能或性能特征有关 在不知道具体类型的情况下,我们也无法真正谈论

我不知道下面的内部实现。简而言之,哪一个性能更有效,
x>=a
还是
x>a | | x==a

编辑1: 让我们将其分为两种情况:

  • a
    x
    属于同一类型时

  • a
    x
    不在同一类型时


  • 严格地说,他们是不平等的。操作员可能会超负荷执行完全不同的操作。只有在功能相同的情况下,才与他们的表现相关

    它们在功能上也不同,在第二个示例中,表达式
    x
    a
    被计算多次,而不是一次。(值得一提的是。)如果这些表达式引起副作用,或者计算成本很高,那么这可能与其功能或性能特征有关


    在不知道具体类型的情况下,我们也无法真正谈论他们的表现。对于这些运算符,某些类型可能与其他类型的运算符具有完全不同的性能特征。我可以卑鄙地在我的
    =
    操作符中抛出一个
    线程。Sleep(1000)
    ,仅仅因为。

    您的表达式已经完全减少了。无法编写需要少于1次比较操作的
    x>=a
    ,这就是它现在所做的。

    x
    a
    是原语时,优化器很可能会将两者转换为相同的代码。但是,当
    x
    a
    是带有函数调用的复杂表达式,并且在相当大的比例下,“小于”表达式返回
    false
    时,您将看到“小于或等于”的表达式执行得更快。此外,第一个表达式没有分支,而第二个表达式有分支。

    为什么你认为两个比较可能比一个更有效?它可能编译为完全相同的汇编代码…@TimSchmelter:因为我不知道
    x>=a
    实际上是如何插入的。:-)@Liel,不太可能,因为后者可以多次“调用”
    x
    。你应该集中精力编写像样的代码。让编译器处理opimizationYea,您还可以使用