打开一个大文件,一旦完全读取它就可以更快地列出(或)打开较小的文件,其总大小等于大文件,并将较小的文件加载到列表中逐个更快地进行操作?
哪个更快?差异是时间大到足以影响我的程序?? 对于我来说,总时差小于30秒可以忽略不计
答案 0 :(得分:6)
这取决于您的数据是否适合您的可用内存。如果您需要求助于分页或虚拟内存,那么打开单个巨型文件可能会比打开更小的文件更慢。如果您需要进行的计算会创建不适合物理RAM的中间变量,那将更加真实。
所以,只要文件不是 大,一个开头会更快,但如果不是这样,那么许多开放可能会更快。
最后,请注意,如果您可以进行多次打开,您可以并行执行这些操作并处理不同进程中的各个部分,这可能会使事情再次变得更快。
答案 1 :(得分:2)
显然,如果您正在读取相同数量的数据,则打开和关闭将比n打开和关闭更快。另外,在读取单个文件时,您使用的I / O类可以利用缓冲等功能,这样可以更快。
答案 2 :(得分:1)
如果从开始到结束顺序读取文件,则一次打开/关闭比多次打开/关闭操作快。
但请记住,如果您需要在1个大文件中进行大量搜索,那么在这种情况下存储单独的文件可能不会更慢。
另请注意,无论您使用哪种方法,都不应立即读取整个文件。以大块的方式做。
答案 3 :(得分:0)
使用单个文件几乎肯定会更快:在这两种情况下你必须读取相同数量的数据,但是当处理多个文件时,你有更多的内务操作会减慢你的速度。
此外,您可以以磁盘可以处理的最大速度从单个文件中读取数据,使用磁盘缓冲区最大等等,而对于多个文件,磁盘头可以在文件之间跳转更多跳跃
答案 4 :(得分:0)
30秒的时差?定义大。适合普通计算机RAM的所有东西可能不会花费比总共30秒更多的时间。
答案 5 :(得分:0)
为什么您认为需要将文件读入列表?
如果你可以打开几个小文件并独立处理,那么这肯定意味着:
(a)您不需要读入列表,您可以一次处理任何文件(包括1个大文件)(避免实际内存不足问题)
或
(b)你需要做的事情比你告诉我们的要复杂得多。