Fastest Way of Accessing Entries in an AA
Foo via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jan 8 23:51:27 PST 2015
On Friday, 9 January 2015 at 06:18:53 UTC, Jonathan M Davis via
Digitalmars-d-learn wrote:
> On Friday, January 09, 2015 00:20:07 Foo via
> Digitalmars-d-learn wrote:
>> On Thursday, 8 January 2015 at 23:06:39 UTC, Nordlöw wrote:
>> > On Thursday, 8 January 2015 at 16:11:07 UTC, ketmar via
>> > Digitalmars-d-learn wrote:
>> >> how can it? compiler doesn't know what the code is supposed
>> >> to
>> >> do. if
>> >> compilers will know such things someday, we can stop writing
>> >> programs
>> >> altogether, as compilers will be able to write any program
>> >> for
>> >> us. ;-)
>> >
>> > Correction:
>> >
>> > I thought it would be nice if the compiler explained to me
>> > that
>> >
>> > key in aa ? aa[key]
>> >
>> > is a sub-optimal performance-wise.
>>
>> You know, that you kan reuse the result of the in operator by
>> AAs?
>>
>> example:
>>
>> auto ptr = key in aa;
>> ptr ? *ptr : ValueType.init
>
> This idiom is quite common:
>
> if(auto ptrToValue = key in aa)
> {
> }
>
> though I'm not sure that that quite fits in with what Nordlow
> seems to be
> trying to do with init. aa.get probably does a better job of
> that, though
> looking at the implementation for get, it's basically doing
> what you're
> suggesting:
>
> auto p = key in aa;
> return p ? *p : defaultValue;
>
> though that has the downside of using a lazy parameter for the
> default
> value, which is convenient but doesn't do great things for
> performance.
>
> - Jonathan M Davis
I just wasn't sure that he knows about it.
More information about the Digitalmars-d-learn
mailing list