在我的程序中,我有一个方法,每次调用时需要打开大约4个文件,因为我需要取一些数据。所有这些数据来自我一直存储在列表中的文件用于制造。 我近似需要调用这个方法大约10,000次。这使得我的程序非常慢?
以更好的方式处理这些文件的任何方法,并将整个数据存储在列表中,消耗什么是更好的列表替代品?
我可以提供一些代码,但我之前的问题已经结束,因为它只会让所有人感到困惑,因为它是大型程序的一部分,需要完全解释才能理解,所以我没有提供任何代码,请提出方法。作为一般性问题...
提前致谢
答案 0 :(得分:3)
作为一般策略,如果数据是静态的,并且相对较小,最好将其保存在内存缓存中。然后,10k调用将读取内存缓存而不是文件。快得多。
如果要修改数据,替代方案可能是SQLite或嵌入式MS SQL Server等数据库(还有其他数据库!)。
目前尚不清楚这是什么种数据。它是简单的配置/属性数据吗?有时你可以找到库来处理这些数据的加载/操作/存储,它通常有自己的内部内存缓存,你需要做的就是调用一个或两个函数。
如果没有关于文件的更多信息(它们有多大?)和数据(它是如何格式化和结构化的?),很难说更多。
答案 1 :(得分:2)
打开,关闭和读取文件10,000次总是很慢。你可以打开文件一次,在列表上执行10,000次操作,然后关闭文件一次吗?
答案 2 :(得分:1)
将数据加载到数据库并在数据库中放置一些索引可能会更好。然后,对您的数据进行简单查询将非常快。您不需要很多工作来设置数据库。您可以创建SQLite数据库而无需单独的过程,并且没有复杂的安装过程。
答案 3 :(得分:0)
从您要运行的方法的调用方法调用open文件。将数据作为参数传递给方法
答案 4 :(得分:0)
如果文件是结构化的,有点配置文件,那么使用ConfigParser库可能会很好,否则如果你有其他结构格式,那么我认为最好将所有这些数据存储在JSON或XML中并执行任何必要的操作关于你的数据