全局变量的数量会影响性能吗?

时间:2019-07-06 13:20:49

标签: lua

我想知道在访问全局变量时,Lua中是否有太多全局变量会减慢速度。

例如,如果我的程序具有10,000个全局变量,那么调用全局函数A会比仅包含100个全局变量的程序中调用该函数慢吗?

Lua如何找到已注册的全局变量?它使用某种哈希图吗?

2 个答案:

答案 0 :(得分:4)

在Lua中,全局变量存储在名为_G的表中。由于必须调整表的大小,因此向大型表添加键有时可能会很慢。我不知道这种减速何时开始的阈值。据我所知,无论表的大小如何,访问键都应该很快。

答案 1 :(得分:4)

在Lua中存储数据的几乎所有东西都是某种形式的表(局部变量是显着的例外)。这包括全局变量。因此,全局访问是表访问,它被实现为哈希表。

对哈希条目的访问将摊销O(1),因此不会根据表中条目的数量而变化。现在,“摊销O(1)”确实允许一些非恒定的方差,但这将不会基于表的大小,而不会基于键的哈希冲突的方式。显然,较大的表意味着可能发生更多的冲突,但是较大的表也使用更多的哈希条目,从而降低了发生冲突的机会。因此,两者通常会相互抵消。

基本上,您无需关心。在任何实际程序中,访问全局变量都不是您将面临的主要性能问题。