2017年10月15日 19:05 GMT+02:00 Soni L. <
fakedme@gmail.com>:
>
>
> On 2017年10月15日 02:58 PM, Dirk Laurie wrote:
>>
>> 2017年10月15日 17:43 GMT+02:00 Soni L. <
fakedme@gmail.com>:
>>>
>>> I'm reading the Lua code, and it seems that Lua always checks the hash
>>> part,
>>> even for tables that don't use it. Why is this?
>>
>> That's not how I read the code. Here are the comments and return
>> statements of luaH_next.
>>
>>    /* find original element */
>>    /* try first array part */
>>    /* a non-nil value? */
>>   ...
>>        return 1;
>>      }
>>    /* hash part */
>>    /* a non-nil value? */
>>   ...
>>        return 1;
>> ...
>>    return 0;  /* no more elements */
>>
>> It's quite possible to return without reaching the code dealing with
>> the hash part.
>>
>
> Look at luaH_get. e.g. t[1] always checks hash part which does have a cost.
> the only way to avoid that cost is to fill the array part: if you have 256
> possible values, you need to fill t[1] to t[256]. and ofc t[0] always goes
> to the hash part so you also need to shift by one if 0 is a valid index.
>
>
> --
> Disclaimer: these emails may be made public at any given time, with or
> without reason. If you don't agree with this, DO NOT REPLY.
>
>