我有大约1,700个矢量形式:
a*x + b*y + c*z
我需要将它存储在Java中的内存结构中。到目前为止,我的想法是存储数据:
这里的最佳举措是什么?
答案 0 :(得分:2)
最好的选择是你能证明最好的选择。这意味着在处理这些问题时,您应该分析不同的解决方案,看看哪种解决方案在数据利用模式方面更好。
我看到了多种不同的选择:
Coefficient { double a, b, c; }
List<double[]>
double[][]
可能最糟糕的选择是将它们包装到Double
个对象中,因为它会在任何地方放置很多开销。
我的猜测是double[][]
应该稍微提高效率,因为JVM具有管理array
的本机指令,但您不会从其他方面获得相同的性能优势语言,因为Java中的二维数组仍然是一个数组数组,所以它在内存中不连续。
对于读取或更新值,可能List<double[]>
和double[][]
的行为方式非常相似,但如果您有大量插入或删除操作可能会发生变化(假设您调整列表大小以便更正)添加元素前的大小)。
最后只需对代码进行概要分析并检查结果。