如何在没有开关或C#的情况下比较3个条件?

时间:2012-10-07 22:09:16

标签: c#

我必须比较一个值,如果该值小于或等于3,则执行某些操作,如果值在4和27之间,则执行其他操作,但如果值大于28则执行其他操作,是有任何优雅的方式,不消耗大量的资源,我可以避免使用if的开关?我必须比较大约60k +值。

4 个答案:

答案 0 :(得分:3)

我认为没有更快的事情。如果您知道数据的分布方式,您可以加快速度。例如,如果大多数值大于27,则首先检查该条件,等等。如果您的数据已排序,您还可以找到一种方法来利用它。

答案 1 :(得分:1)

使用quicksort对值进行排序。此实现将减少if比较的数量,但可能不会更快。

答案 2 :(得分:1)

我给这样一张支票定时:

if (i <= 3) {
  DoSomething();
} else if (i <= 27) {
  DoSomethingElse();
} else {
  DoSomethingElse();
}

在我的计算机上执行此操作60000次大约需要35微秒。如果这对你所做的事情来说太长了,你必须重新思考你在做什么,而不是尝试不同的方式。

答案 3 :(得分:1)

您可以使用Conditional运算符(?:)并执行以下操作:

i = (i <= 3) ? DoSomething() : (i <= 27) ? DoSomething(): DoSomething();

这只是更精简,在我的计算机上需要571400纳秒(6gb ram),而if..else语句需要407400纳秒,因此if..else语句更快,但条件运算符更精简