表长度运算符的性能

cha*_*oin 4 c performance lua lua-table

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

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

(显然,对于相当小的表格,这可能不会显示出明显的差异,但知道这一点并不坏.)

lhf*_*lhf 9

#Lua不会在内部存储表的值:每次调用它时都会计算它.

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