On 2/27/2013 8:53 PM, Zach the Mystic wrote:
My understanding of the logic of Sentinel Ranges so far is that switch
statements and other control flow can proceed eagerly, because "go" values can
be checked before the sentinel "stop" value, and "!empty" is known implicitly. I
don't know exactly where the speed benefits of having a single "stop" value
known at compile time come from.

Is this design focused more on your knowledge of how the compiler optimizes
machine code, or on something which can be grasped at a higher level?

Take a look at lexer.c.

With an InputRange, reading a character from a 0 terminated string requires two read operations. A SentinalInputRange requires only one.

Reply via email to