by Nigel Jones
原文: http://embeddedgurus.com/stack-overflow/2009/02/efficient-c-tips-6-dont-use-the-ternary-operator/
I have to confess that I like the ternary operator. K&R obviously liked it, as it is heavily featured in their seminal work. However after running experiments on a wide range of compilers I have concluded that with the optimizer turned on, you are better off with a simple if-else statement. Thus next time you write something like this:
y = (a > b) ? c : d;
be aware that as inelegant as it is in comparison, this will usually compile to better code:
if (a > b) { y = c; } else { y = d; }
I find this frustrating, as I’ve consumed 8 lines doing what is more easily and elegantly performed in 1 line.
I can’t say that I have any particular insight as to why the ternary operator performs so poorly. Perhaps if there is a compiler writer out there, they could throw some light on the matter?
// 评论很精彩. 绝对能学到更多.