哪个更快?

时间:2010-06-15 18:08:37

标签: python

打开一个大文件,一旦完全读取它就可以更快地列出(或)打开较小的文件,其总大小等于大文件,并将较小的文件加载到列表中逐个更快地进行操作?

哪个更快?差异是时间大到足以影响我的程序?? 对于我来说,总时差小于30秒可以忽略不计

6 个答案:

答案 0 :(得分:6)

这取决于您的数据是否适合您的可用内存。如果您需要求助于分页或虚拟内存,那么打开单个巨型文件可能会比打开更小的文件更慢。如果您需要进行的计算会创建不适合物理RAM的中间变量,那将更加真实。

所以,只要文件不是 大,一个开头会更快,但如果不是这样,那么许多开放可能会更快。

最后,请注意,如果您可以进行多次打开,您可以并行执行这些操作并处理不同进程中的各个部分,这可能会使事情再次变得更快。

答案 1 :(得分:2)

显然,如果您正在读取相同数量的数据,则打开和关闭将比n打开和关闭更快。另外,在读取单个文件时,您使用的I / O类可以利用缓冲等功能,这样可以更快。

答案 2 :(得分:1)

如果从开始到结束顺序读取文件,则一次打开/关闭比多次打开/关闭操作快。

但请记住,如果您需要在1个大文件中进行大量搜索,那么在这种情况下存储单独的文件可能不会更慢。

另请注意,无论您使用哪种方法,都不应立即读取整个文件。以大块的方式做。

答案 3 :(得分:0)

使用单个文件几乎肯定会更快:在这两种情况下你必须读取相同数量的数据,但是当处理多个文件时,你有更多的内务操作会减慢你的速度。

此外,您可以以磁盘可以处理的最大速度从单个文件中读取数据,使用磁盘缓冲区最大等等,而对于多个文件,磁盘头可以在文件之间跳转更多跳跃

答案 4 :(得分:0)

30秒的时差?定义大。适合普通计算机RAM的所有东西可能不会花费比总共30秒更多的时间。

答案 5 :(得分:0)

为什么您认为需要将文件读入列表?

如果你可以打开几个小文件并独立处理,那么这肯定意味着:

(a)您不需要读入列表,您可以一次处理任何文件(包括1个大文件)(避免实际内存不足问题)

(b)你需要做的事情比你告诉我们的要复杂得多。