为什么Lua中的大队列使用w/table remove/insert效率低下?

dgo*_*o.a 3 queue lua lua-table

来自PiL(第1版和第2版):

虽然我们可以使用insert和remove(从表库中)轻松实现队列,但对于大型结构,此实现可能太慢.更有效的实现使用两个索引,一个用于第一个,另一个用于最后一个元素......

这是因为重新编制索引吗?或者还有另一个原因导致大型结构的效率低下?

dgo*_*o.a 6

我在书的后面找到了答案:http://www.lua.org/pil/19.2.html

...从数组中的给定位置移除(并返回)元素,向下移动其他元素以关闭空间并减小数组的大小.

要在结构的另一端插入,我们使用table.insert(a,1,x); 要从中删除我们使用table.remove(a,1).最后两个操作不是特别有效,因为它们必须上下移动元素.但是,因为表库在C中实现了这些函数,所以这些循环并不太昂贵,并且这种实现对于小型数组来说已经足够了(比如说多达几百个元素).