我该怎么提高Lua程序的性能?

我询问了关于Lua性能的问题,其中一个回答(https://stackoverflow.com/questions/124455/how-do-you-pre-size-an-array-in-lua#152894)提到:

你是否学习过保持Lua性能高的一般提示?比如知道表格创建并且更喜欢重用表格而不是创建新的,使用“local print=print”之类来避免全局访问。

这是一个略微不同的问题,与Lua Patterns,Tips and Tricks不同,因为我想要的答案会明确地影响性能,并且(如果可能)解释为什么会影响性能。

每个答案一个提示是理想的。

原文链接 https://stackoverflow.com/questions/154672

点赞
stackoverflow用户15124
stackoverflow用户15124

保持表格简短,表格越大搜索时间就越长。同一行中,对数字索引的表格(即数组)进行迭代比对基于键的表格更快(因此ipairs比pairs更快)。

2008-11-28 01:40:52
stackoverflow用户18403
stackoverflow用户18403
  • 将最常用的函数设置为局部变量
  • 充分利用表格作为哈希集
  • 通过重复利用来减少表格创建
  • 使用 luajit!
2008-11-28 02:06:51
stackoverflow用户41661
stackoverflow用户41661

如果你的 Lua 程序真的太慢了,使用 Lua 代码分析工具并清理代价高的内容,或者迁移到 C 语言。但如果你没有坐在那里等待,那么你的时间就浪费了。

优化的第一法则:不要优化。

我很想看到一个问题,您可以在 ipairs 和 pairs 之间进行选择,并且可以测量差异的影响。

最简单的低垂果实是记住在每个模块内使用本地变量。一般来说,除非你能找到一个告诉你不同的测量结果,否则不值得这样做:

local strfind = string.find
2008-11-28 21:15:21
stackoverflow用户88888888
stackoverflow用户88888888

需要指出的是,使用表格中的数组字段比使用任何类型的键的表格要快得多。这是因为(几乎)所有的Lua实现(包括LuaJ)在表格内部存储了一个名为“数组部分”的元素,它通过表格数组字段进行访问,不存储字段键,也不需要查找它;)

你甚至可以模仿其他语言的静态方面,例如struct,C ++ / Javaclass等。本地变量和数组就足够了。

2017-06-26 18:37:59