lua table数组使用优化

1,添加时arr[#arr + 1] = item,比table.insert(arr, item)更快

  前者是 Lua 虚拟机直接执行的原生字节码指令(取长度、加法、赋值),几乎没有额外开销

  后者有函数调用开销:虽然它底层也是用 C 实现的,但调用它需要创建调用栈帧,在热点循环(如每秒执行上万次)中,存在20%~30% 的差距

 

2,尾部删除时,arr[#arr] = nil,比table.remove(arr, i)更快

  前者是Lua 虚拟机直接执行的 2~3 条原生字节码(取长度、置空),零函数调用开销,也不会有#arr获取长度问题

  后者需要查找全局表、调用 C 函数、处理元表,有额外的函数栈帧开销

  性能差距明显:在单次操作中差距仅纳秒级,但在高频循环(如每帧清空队列)中,前者通常比后者快 30%~50%

  两者都只是把最后一个槽位置为 nil 并递减逻辑长度,都不会触发任何内存拷贝

 

3,中间删除时,推荐用table.remove

posted @ 2026-08-27 23:54  yanghui01  阅读(9)  评论(0)    收藏  举报