std.data.json formal review

via Digitalmars-d digitalmars-d at puremagic.com
Tue Aug 18 02:10:25 PDT 2015


On Monday, 17 August 2015 at 22:34:36 UTC, Andrei Alexandrescu 
wrote:
> On 8/17/15 2:51 PM, deadalnix wrote:
>>  From the compiler perspective, the tag is much nicer. 
>> Compiler can use
>> jump table for instance.
>
> The pointer is a more direct conduit to a jump table.

Not really, because it most likely doesn't point to where you 
need it, but to a `TypeInfo` struct instead, which doesn't help 
you in a `switch` statement. Besides, you probably shouldn't 
compare pointers vs integers, but pointers vs enums.

>
>> It is not a good solution for Variant (which needs to be able 
>> to
>> represent arbitrary types) but if the amount of types is 
>> finite, tag is
>> almost always a win.
>> In the case of JSON, using a tag and packing trick, it is 
>> possible to
>> pack everything in a 2 pointers sized struct without much 
>> trouble.
>
> Point taken. Question is if this is worth it.

Anything that makes it fit in two registers instead of three (= 2 
regs + memory, in practice) is most likely worth it.


More information about the Digitalmars-d mailing list