希望解释一下,下面介绍的方法为什么可以节省那么多时间
减少是最简单的一种途径。有几种方法可以避免创建对象。例如,如果你的程序使用了大量的表,你可以考虑改变它的数据表示方式。举个简单的例子,假如你的程序需要处理多边形。在Lua里表示一个多边形最自然的方式就是表示成一个点的列表,像这样:
polyline = { { x = 10.3, y = 98.5 },
{ x = 10.3, y = 18.3 },
{ x = 15.0, y = 98.5 },
...
}
尽管这是很自然的一种方式,但是当多边形很大的时候,由于每个点都要用一个表来存储,这种方式就显得有点不太经济了。第一种改进方法是该用数组来存储,这会内存使用量减少:
polyline = { { 10.3, 98.5 },
{ 10.3, 18.3 },
{ 15.0, 98.5 },
...
}
一个有一百万个点的多边形,这种改变会将内存使用从95KB降到65KB。当然,你牺牲了程序的可读性作为代价:p[i].x要比p[i][1]让人容易看得懂。
另一个更经济的方法是用一个列表来存储x轴的值,另一个列表存储y轴的值:
polyline 之前的p[i].x就是现在的p.x[i]。使用这种方式,一个有一百万个点的多边形使用的内存只有24KB。