Lua高效代码的实现解释

希望解释一下,下面介绍的方法为什么可以节省那么多时间

减少是最简单的一种途径。有几种方法可以避免创建对象。例如,如果你的程序使用了大量的表,你可以考虑改变它的数据表示方式。举个简单的例子,假如你的程序需要处理多边形。在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。

这只是压缩了存储空间,并没有提高什么执行效率...以现在的存储器的规模,需要在意这么一点点么..我觉得还是可读性更重要一些