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