有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java哪个更快?双[][]矩阵或ArrayList<ArrayList<double>>

在速度更快的Java中,请注意,我不需要在Big O thing中使用(删除、添加)的灵活性。但我确实需要进入大O

该操作仅用于两个矩阵的乘法或减法、加法等

还要注意,数组是基本的


共 (5) 个答案

  1. # 1 楼答案

    double[][]比使用ArrayList和Double更高效。它将使用一小部分内存,这意味着您将获得更好的缓存行为。而且double[]中的double在内存中是连续的,这也提高了缓存性能

    顺便说一句:Double可能在内存中非常随机地排列,并用于缓存

  2. # 2 楼答案

    数组应该更快,因为ArrayList还使用一个内部数组,因此您有一个额外的调用(get(x))。获取(y)),这将消耗更多的时间

  3. # 3 楼答案

    double[][]ArrayList<ArrayList<Double>>的操作将在相同的Big-O bounds中运行

    也就是说,无症状边界是相同的——如果ArrayList不必调整大小,那么对于索引操作来说,访问确实是O(1)(即使对于访问双/双装箱内存位置来说C[常数]可能更大)。选择一个而不是另一个不会增加或降低复杂性,也不会改变大O

    哪个挂钟快?我的赌注在数组上,但唯一“确定”的方法——包括“快多少”,以及在何种情况下——是在给定的环境/问题/问题大小上对不同的结构进行基准测试,并比较结果。(这应该是尝试“优化”时的第一步。)

    快乐编码

  4. # 4 楼答案

    double[]更快。在java中,没有比这更原始的语句了

  5. # 5 楼答案

    使用double [][]您不必担心自动装箱或内部大小调整/复制操作,因此速度会更快

    另一方面,除非您使用的是非常大的集合,否则性能差异应该是不明显的