Proposal for SentinelInputRange

deadalnix deadalnix at gmail.com
Wed Feb 27 21:20:22 PST 2013


On Thursday, 28 February 2013 at 04:57:08 UTC, Walter Bright 
wrote:
> 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.

If the range define empty with something like front == sentinel, 
the inliner should kick in a reduce the whole stuff to only one 
read, no ?


More information about the Digitalmars-d mailing list