如何提高我的程序速度

时间:2010-02-07 05:26:26

标签: java optimization

我将数据存储在两个不同的谷歌电子表格中。一个电子表格有近1000个条目。我使用另一个电子表格来提供输入。我的约束是比较这两个电子表格,如果普通数据出现在两个电子表格中,而不是将数据放入另一个电子表格中。所以我用循环来比较这两个。

我的问题是需要更多时间。还有其他解决方案可以提高我的程序速度。

4 个答案:

答案 0 :(得分:5)

如果您可以将数据放入数据库中,那么它将真正有助于您的读/写速度。也许您可以通过同时读取两个电子表格中的所有数据并将其存储在内存中然后进行比较来加快速度?

如果没有关于您的实施的更多详细信息,那么我可以帮助您。

答案 1 :(得分:2)

我猜你的速度问题来自不正确的算法。如果你循环,正如你在两篇文档中所说,你有这样的东西:

for i in doc1:
  for j in doc2:
    if (compare(i,j) == 0) output(i)

对于1000件物品文件,这是1000000次操作,这很慢。

对此有一个简单的改进,它基于对物品进行分类。因此,您可以附加这两个文档,对它们进行排序并迭代数组。这将使大约4000次操作,这是巨大的改进。

无论是Java还是Visual Basic都无关紧要。

我相信,你也可以在SQL中快速完成这种操作。

答案 2 :(得分:2)

  • 创建两个HashSet个实例,并将每个文档的条目放入其中一个。
  • 使用set1.retainAll(set2)
  • 创建两个集合的交集
  • set1现在只包含两个文档中的条目
  • 运行速度比使用嵌套循环快100倍

答案 3 :(得分:0)

如果您的电子表格是Excel电子表格,请不要使用Java,将其作为Excel宏在VBA中编码,它将更容易100倍......而且可能还要快100倍。