【问题标题】:Performance for table length operator表长度运算符的性能
【发布时间】:2013-08-13 20:28:26
【问题描述】:

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

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

(很明显,对于相当小的表,这可能不会显示出明显的差异,但知道这一点也不错。)

【问题讨论】:

    标签: c performance lua lua-table


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-05-28
      • 2014-03-30
      • 1970-01-01
      • 2011-08-17
      • 2023-03-31
      • 2012-09-04
      • 2014-03-31
      • 2019-12-14
      • 2017-03-14
      相关资源
      最近更新 更多