繁体   English   中英

Java:字符串与用于存储点的自定义类

[英]Java: String vs. custom class for storing a point

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

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

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

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

如果要实现低内存使用,可以将一个数组存储在一起,以存储X,Y,Z。

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

  • X为0 + 3 * i
  • Y为1 + 3 * i
  • Z为2 + 3 * i

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

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

您当然可以使用类似getX(int index)的类来包装这个大表,以使其更具可读性,从而降低CPU成本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM