Lua 有#
运算符来计算用作数组的表的“长度”。在诸如 C 之类的语言中,在计算完某物的长度后,通常不会再次计算它。例如int len = strlen(string);
这在 Lua 中有什么不同吗?一个比另一个效率低吗?
(显然,对于相当小的表来说,这可能不会显示出明显的差异,但知道这一点也不错。)
Lua 有#
运算符来计算用作数组的表的“长度”。在诸如 C 之类的语言中,在计算完某物的长度后,通常不会再次计算它。例如int len = strlen(string);
这在 Lua 中有什么不同吗?一个比另一个效率低吗?
(显然,对于相当小的表来说,这可能不会显示出明显的差异,但知道这一点也不错。)
Lua 内部不存储表的值#
:每次调用时都会计算它。
Lua 使用二进制搜索,因此成本是表大小的对数。请参阅http://www.lua.org/source/5.2/ltable.c.html#luaH_getn上的代码。换句话说,成本基本上是恒定的,除了巨大的桌子。