java哪个更快?双[][]矩阵或ArrayList<ArrayList<double>>
在速度更快的Java中,请注意,我不需要在Big O thing中使用(删除、添加)的灵活性。但我确实需要进入大O
该操作仅用于两个矩阵的乘法或减法、加法等
还要注意,数组是基本的
你可以在下面搜索框中键入要查询的问题!
在速度更快的Java中,请注意,我不需要在Big O thing中使用(删除、添加)的灵活性。但我确实需要进入大O
该操作仅用于两个矩阵的乘法或减法、加法等
还要注意,数组是基本的
# 1 楼答案
double[][]
比使用ArrayList和Double更高效。它将使用一小部分内存,这意味着您将获得更好的缓存行为。而且double[]
中的double
在内存中是连续的,这也提高了缓存性能顺便说一句:
Double
可能在内存中非常随机地排列,并用于缓存# 2 楼答案
数组应该更快,因为ArrayList还使用一个内部数组,因此您有一个额外的调用(get(x))。获取(y)),这将消耗更多的时间
# 3 楼答案
对
double[][]
和ArrayList<ArrayList<Double>>
的操作将在相同的Big-O bounds中运行也就是说,无症状边界是相同的——如果ArrayList不必调整大小,那么对于索引操作来说,访问确实是
O(1)
(即使对于访问和双/双装箱和内存位置来说C
[常数]可能更大)。选择一个而不是另一个不会增加或降低复杂性,也不会改变大O哪个挂钟快?我的赌注在数组上,但唯一“确定”的方法——包括“快多少”,以及在何种情况下——是在给定的环境/问题/问题大小上对不同的结构进行基准测试,并比较结果。(这应该是尝试“优化”时的第一步。)
快乐编码
# 4 楼答案
double[]更快。在java中,没有比这更原始的语句了
# 5 楼答案
使用
double [][]
您不必担心自动装箱或内部大小调整/复制操作,因此速度会更快另一方面,除非您使用的是非常大的集合,否则性能差异应该是不明显的