Ternary ? operator vs the conventional If-else operator in c# [duplicate]

旧城冷巷雨未停 提交于 2019-11-27 19:18:40

I ran 100 million Ternary Operators and 100 million If-Else statements and recorded the performance of each. Here is the code:

Stopwatch s = new Stopwatch();
// System.Diagnostics Stopwatch
int test = 0;
s.Start();
for(int a = 0; a < 100000000; a++)
    test = a % 50 == 0 ? 1 : 2;
s.Stop();

s.Restart();
for(int b = 0; b < 100000000; b++)
{
    if(b % 50 == 0)
        test = 1;
    else
        test = 2; 
}
s.Stop();

Here is the results (ran on an Intel Atom 1.66ghz with 1gb ram and I know, it sucks):

  • Ternary Operator: 5986 milliseconds or 0.00000005986 seconds per each operator.

  • If-Else: 5667 milliseconds or 0.00000005667 seconds per each statement.

Don't forget that I ran 100 million of them, and I don't think 0.00000000319 seconds difference between the two matters that much.

No.

Use what makes your code readable. If if statements do that, use them. If ternary operators do that, use them.

It is likely that both will compile down to the same IL anyway.

In any event the things that will slow down your application will likely be the database or the network or the hard drive ... anything except whether you used if statements or ternary expressions.

There's no reason to expect any difference in performance.

In my opinion, the ternary operator should only be used if all three operands are very concise and easy to read. Otherwise I think it has the potential to make code harder to read.

I think a lot of people mis-use this operator by jamming too much logic into one long line of code. I personally won't use it unless the whole line is less than about 80 characters.

Good:

return isFunky ? funkyValue : null;

Bad:

return (thisThing == thatThing && (anotherThing != null || ! IsThisTrue())) ? someThing.GetThis().GetThat() : yetAnotherThing.GetBlah().GetFoo();

I've seen people do a lot worse than the above. I think they should loose their ternary privileges!

It is very hard to read ternary operations. If you use nested conditions, understanding ternary will become a overhead. Try to avoid ternary if there are more number of conditions.

From my personal point of view, i don't see any performance differences between ternary operator and if statement.Many programming languages supports it and tenary operator is more developer friendly where as conventional If-else operator is understandable in general way.

http://en.wikipedia.org/wiki/%3F%3a

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!