Yeah, easy to predict branches are really cheap. Very non-deterministic, hard-to-predict ones on the other hand are still surprisingly expensive. In such a case, conditional moves might make sense, or sometimes you can also use the result of a comparison in arithmetic operations, something like:<p><pre><code>  idx = 2*idx + (key &gt; table[idx])
</code></pre>
(to move a key down an implicitly-stored binary tree)