2

我正在处理一大组 X、Y、Z 点。如果我需要保持较低的 RAM 使用率,那么存储所有点的最佳方法是什么?一个字符串“X,Y,Z”,一个自定义类,或者它不会有任何区别?

4

3 回答 3

8

字符串几乎绝对是一个错误的选择:它们浪费了大约一半的空间,如果不是更多的话,它们会让你浪费 CPU 周期来将数据恢复为适合处理的数字格式。

具有三个原始字段的自定义类是更好的选择。根据点的范围和类型,使用byteshortintlongfloatdouble。这可以帮助您避免每次要使用点时解析坐标。

于 2012-11-12T03:57:36.053 回答
2

如果你想实现低内存使用,你可以制作一个数组来存储 X、Y、Z。

对于索引为 i 的点,您可以将 X、Y、Z 存储在具有以下索引的数组元素中:

  • 0 + 3*i 对于 X
  • 1 + 3*i 代表 Y
  • 2 + 3*i 代表 Z

编辑:这种方法还具有以下重要优点,在某些情况下可能非常方便:

  • 将几何算法的所有数据放在内存中的一个连续位置,使 CPU 缓存效率更高。
  • 它不会因为大量的小对象而使内存管理混乱。

你当然可以用一个类来包装这个大表,该类具有一些方法,例如getX(int index)以少量 CPU 成本使其更具可读性。

于 2012-11-12T04:04:59.823 回答
2

为什么不是一个包含 3 个元素的数组?

于 2012-11-12T03:58:12.417 回答