Java 如何提高我的程序速度
我将数据存储在两个不同的谷歌电子表格中。一个电子表格有近1000个条目。我使用另一个电子表格进行输入。我的限制是比较这两个电子表格,如果两个电子表格中出现公共数据,则将该数据放入另一个电子表格。因此,我使用for loop对这两个进行比较Java 如何提高我的程序速度,java,optimization,Java,Optimization,我将数据存储在两个不同的谷歌电子表格中。一个电子表格有近1000个条目。我使用另一个电子表格进行输入。我的限制是比较这两个电子表格,如果两个电子表格中出现公共数据,则将该数据放入另一个电子表格。因此,我使用for loop对这两个进行比较 我的问题是它需要更多的时间。有没有其他的解决方案来提高我的程序速度。如果你能将数据放入数据库,它将真正帮助你提高读/写速度。也许您可以通过同时读取两个电子表格中的所有数据并将其存储在内存中,然后进行比较来提高速度 没有更多关于您的实现的详细信息,这是我能帮助您
我的问题是它需要更多的时间。有没有其他的解决方案来提高我的程序速度。如果你能将数据放入数据库,它将真正帮助你提高读/写速度。也许您可以通过同时读取两个电子表格中的所有数据并将其存储在内存中,然后进行比较来提高速度
没有更多关于您的实现的详细信息,这是我能帮助您的。如果您的电子表格是Excel电子表格,不要使用Java,将其作为Excel宏在VBA中编码,这将容易100倍。。。而且速度可能也快了100倍。我想你的速度问题是因为算法不正确。如果您循环,正如您在两个文档上所说的,您有如下内容:
for i in doc1:
for j in doc2:
if (compare(i,j) == 0) output(i)
这是1000个项目文档的1000000次操作,速度很慢
这方面有一个简单的改进,它基于对项目的排序。所以您可以附加这两个文档,对它们进行排序,并在数组中迭代。这将产生大约4000个操作,这是一个巨大的改进
不管它是Java还是Visual Basic
我相信,您也可以在SQL中快速完成这种操作 - 创建两个
实例,并将每个文档的条目放入其中一个实例中HashSet
- 使用创建两个集合的交点
现在只包含两个文档中存在的条目set1
- 运行速度大约是使用嵌套循环的100倍