zyh520538 2017-04-26 08:09 采纳率: 0%
浏览 1380
已结题

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。

  • 写回答

1条回答 默认 最新

  • k80676535 2017-04-26 08:16
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思