我需要针对多个值测试文件中的行
每次打开文件和逐行阅读与打开文件一次放入数组并每次遍历数组之间的时间差异有什么不同?
答案 0 :(得分:4)
为了扩展@mpacpec在评论中所说的内容,文件IO总是慢于内存读/写。但故事还有更多内容。 “文件中针对多个值的测试行”可以通过多种方式进行解释,因此,如果不了解您正在尝试做什么的更多信息,那么没有人可以更具体地告诉您任何内容。所以答案是“这取决于”。这取决于文件大小,您正在测试的内容以及测试频率以及测试方式。
然而,实际上,根据我对你所说的内容的理解,你必须以这种或那种方式阅读整个文件,你必须以某种方式测试每一行。做最简单的写/读/理解,看看它是否足够快。如果不是,您可以从中提出更有用的基线来提问。就个人而言,我从一个行读取和测试循环开始并从那里开始工作,只是因为我认为正确编写会更容易,更快。
让它工作,然后快速完成:)
答案 1 :(得分:1)
在前一种情况下,您可以在每一行上进行所需的所有测试(而不是每次都重新读取文件),那么这两种方法应该大致相同的速度和I / O,CPU效率(忽略二阶效应,例如磁盘IO是否更容易被其他进程分散注意力)。但是,后一种情况 - 读取整个文件 - 可能会达到大文件的内存限制,这可能会导致性能大幅下降甚至失败。
逐行处理文件的主要成本是失去灵活性 - 例如,如果你需要交叉引用这些行,那就不容易了(虽然如果它们都在内存中,那么这样做的代码就是更简单,更快捷。)