gpt4 book ai didi

optimization - 如何在 Lua 中预先确定数组的大小?

转载 作者:行者123 更新时间:2023-12-03 05:14:40 25 4
gpt4 key购买 nike

我有一个 Lua 程序,它似乎比应有的速度要慢。我怀疑问题在于我一次向关联数组添加一个值,并且表每次都必须分配新的内存。

似乎确实有一个table.setn函数,但在Lua 5.1.3下失败:

stdin:1: 'setn' is obsolete
stack traceback:
[C]: in function 'setn'
stdin:1: in main chunk
[C]: ?

我从 Google 搜索中得知,此功能在 Lua 5.1 中已被弃用,但我找不到替换该功能的内容(如果有的话)。

你知道如何在 Lua 中预先调整表格的大小吗?

或者,当您向表添加对象时,是否有其他方法可以避免内存分配?

最佳答案

让我更关注你的问题:

adding values to an associative array one at a time

Lua 中的表是关联的,但以数组形式 (1..N) 使用它们是优化的。它们内部有双面。

所以..如果您确实要关联地添加值,请遵循上述规则。

如果您使用索引 1..N,您可以通过设置 t[100000]= 强制进行一次性大小重新调整。这应该一直有效,直到达到 Lua 源中指定的优化数组大小的限制 (2^26 = 67108864)。之后,一切都是关联的。

附:旧的“setn”方法仅处理数组部分,因此它对于关联使用没有用处(忽略这些答案)。

p.p.s。您是否研究过保持 Lua 高性能的一般技巧?即了解表创建并重用表而不是创建新表,使用“本地 print=print”等以避免全局访问。

关于optimization - 如何在 Lua 中预先确定数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com