Re: Pure Lua tables
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: Pure Lua tables
- From: "Soni L." <fakedme@...>
- Date: 2017年10月15日 15:05:08 -0200
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.