表长度运算符的性能

时间:2013-08-13 04:50:55

标签: c performance lua lua-table

Lua有#运算符来计算用作数组的表的“长度”。在诸如C之类的语言中,在计算出某事物的长度之后,通常不再计算它。例如int len = strlen(string);

Lua有什么不同吗?一个效率低于另一个吗?

(显然,对于相当小的表,这可能不会显示明显的差异,但知道它永远不会坏。)

1 个答案:

答案 0 :(得分:9)

表中#的值不是由Lua在内部存储的:它是在每次调用时计算的。

Lua使用二进制搜索,因此成本与表的大小成对数。请参阅http://www.lua.org/source/5.2/ltable.c.html#luaH_getn处的代码。换句话说,成本基本上是不变的,除了巨大的表格。