Possible way to achieve lazy loading with const objects

Steven Schveighoffer schveiguy at yahoo.com
Thu Sep 29 10:53:10 PDT 2011


On Thu, 29 Sep 2011 13:50:54 -0400, Peter Alexander  
<peter.alexander.au at gmail.com> wrote:

> On 29/09/11 12:37 PM, Steven Schveighoffer wrote:
>> On Wed, 28 Sep 2011 20:11:51 -0400, Peter Alexander
>> <peter.alexander.au at gmail.com> wrote:
>>
>>> On 26/09/11 8:02 PM, Steven Schveighoffer wrote:
>>>> I think a better avenue would be to implement some sort of strong-pure
>>>> memoization system. Then all you have to do is make an immutable pure
>>>> member, and the compiler will take care of the rest for you.
>>>
>>> How can the compiler possibly figure out the best way to cache things
>>> for you?
>>>
>>> Or have I misunderstood?
>>
>> It would likely be some sort of tag. Like:
>>
>> @memoize pure int reallyTimeConsumingMethod() immutable
>>
>
> That's the syntax, but what code would the compiler generate to do the  
> memoization? A hash table of inputs to outputs? That seems really  
> inefficient.

It depends on the situation.  The compiler/runtime is free to put it  
wherever it wants.  If it's a class member function, I'd strongly suggest  
allocating extra space in the instance to store it there.

-Steve


More information about the Digitalmars-d mailing list