0

我需要针对多个值测试文件中的行

每次打开文件并逐行读取与打开文件将文件放入数组并每次遍历数组之间的时间差异是什么?

4

2 回答 2

4

为了扩展@mpacpec 在他的评论中所说的内容,文件 IO 总是比内存读/写慢。但还有更多的故事。“针对多个值的文件中的测试行”可以通过多种方式进行解释,因此如果不知道更多关于您到底想要做什么,那么没有人可以更具体地告诉您任何事情。所以答案是,“这取决于”。这取决于文件大小、测试的内容、频率以及测试方式。

但是,务实地说,根据我对您所说的内容的理解,您必须以一种或另一种方式阅读整个文件,并且必须以一种或另一种方式测试每一行。做最容易写/读/理解的事情,看看是否足够快。如果不是,您有一个更有用的基线来提出问题。就个人而言,我会从逐行读取和测试循环开始,然后从那里开始工作,仅仅是因为我认为正确编写会更容易、更快。

让它工作,然后让它快速:)

于 2013-05-10T18:35:01.390 回答
1

假设在前一种情况下你可以在每一行上做你需要的所有测试(而不是每次都重新读取文件),那么这两种方法应该是大致相同的速度和 I/O、CPU 效率(忽略二阶效应例如磁盘 IO 是否更容易被其他进程分心)。但是,后一种情况 - 读取整个文件 - 可能会达到大文件的内存限制,这可能会导致其性能大幅下降甚至失败。

逐行处理文件的主要成本是失去灵活性 - 例如,如果您需要交叉引用这些行,这并不容易(如果它们都在内存中,那么执行此操作的代码会更简单并且快点)。

于 2013-05-10T18:29:47.477 回答