Robert Bradshaw wrote:
> I was actually surprised how little of a difference the __builtin_expect
> macros made in most cases, I guess gcc is good at guessing right most of
> the time. (Still worth it I think, as we *know* the common code path.)

I think the problem is that both of us are benchmarking these things on
Intel 32-bit platforms that don't support branch prediction hints and
usually require a certain opcode chain anyway. Plus, these processors are
pretty smart about branch prediction anyway, so running tight loops in
benchmarks will usually result in perfect branch prediction.

There might be a difference on other architectures like Itanium where
compilers are smart and the metal is stupid.


>>> I'd love for someone to implement a control flow analysis--I started to
>>> but never had time to finish (or do it right).
>>
>> The "do it right" can also refer to complexity, BTW. There was a post on
>> c.l.py a couple of months ago where someone presented some heavy
>> algorithm
>> (don't remember what it did) and asked for ways to make it faster. I just
>> went: "ah, I can use Cython for that", but I didn't even manage to
>> compile
>> it. It contained an impressively long list of "if" statements, just one
>> after the other (no nesting), and that let the control flow analysis die
>> from stack exhaustion.
> 
> Hmm... did you file a trac ticket?

Ah, you're right, I will.

Stefan

_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to