使用图论的面向对象方法Java中的算法比基于通用数组的操作更快吗?

时间:2017-08-28 09:53:48

标签: java arrays algorithm graph-theory

我总是习惯于在解决图形理论问题时创建大量的课程,如:

class Node{
   ......
}
class Edge{
   ......
}

这通常会让我遇到性能和速度问题。因此,我觉得使用数组存储图形比将其存储在用户定义的类和结构(如列表和地图)中更快,尽管后者为代码提供了更大的灵活性和可读性。因此,使用数组和语言结构来表示图形确实会导致任何显着的性能提升。如果是,那么在用Java编码时哪个应该是一般选择?

3 个答案:

答案 0 :(得分:1)

测量它。

构建解决方案,将其放入分析器并查看大部分计算时间用完的地方。一般来说,你不能明智地争论这个话题,你需要实验。

那就是说:在98%的情况下,你最好编写可读的OO代码。如果结果太慢,请缩小导致问题的方法(使用分析器)并尝试更快地使该方法。不要开始编写丑陋的代码,希望它可能比漂亮的代码更快。

答案 1 :(得分:0)

数组的问题在于它们假设大图的内存浪费很大,通常在节点之间实现很少的链接。

您获得的性能提升不仅取决于数据结构,还取决于您在其上执行的图形和操作类型。

E.g。在阵列实现上删除节点可能非常昂贵。

答案 2 :(得分:0)

是的,有时图表比数组更快。基本上有时它取决于您的要求。有时如果你使用数组是最好的选择,有时候是图表。 java中有许多可用的集合。像链表,arraylist,vector,doublelinkedlist等。所有的集合在java中都很快。您只需选择符合您要求的最佳可能性......