Anything in the review queue?

Don nospam at nospam.com
Wed Mar 23 07:26:03 PDT 2011


bearophile wrote:
> Don:
> 
>> However, the other case which is interesting is when BigInt is replaced 
>> with FixedInt!n (maybe someone can come up with a better name for this?) 
>> -- an integer with a length of a fixed number of ints.
>> Unlike BigInt, this has basically the same semantics as built-in integer 
>> types. In fact, FixedInt!1 == int, FixedInt!2 == long, FixedInt!4 == cent.
>> This is possibly even more relevant for Rational. I haven't thought much 
>> about the implications though.
>>
>>> BTW, does BigInt over-allocate initially to allow certain operations 
>>> (like +=) to be done in-place more frequently?
>> No, it doesn't. As long as it uses copy-on-write, there's no benefit to 
>> doing so.
>> Reference counting would clearly be superior for FixedInt, but I'm not 
>> at all sure that it would be a win for BigInt. But of course FixedInt 
>> wouldn't need to over-allocate.
> 
> Are FixedInt fully allocated on the stack?

Note that they don't currently exist (though I heard someone is working 
on it) but the implementation I would envisage is:
If size <= long.sizeof, alias to built-in type.
If size < threshold (maybe 2*cent.sizeof), allocate on the stack.
Otherwise, implement as a pointer to reference counted heap memory.


More information about the Digitalmars-d mailing list