为什么“口吃”不是一个好的做法?

为什么“口吃”不是一个好的做法?

为什么对于普通的文本文件I/O来说,“快速”不是一个很好的实践,什么时候它是有用的呢?

例如,我为什么不使用这些?

File.read('/path/to/text.txt').lines.each do |line|
  # do something with a lineend

File.readlines('/path/to/text.txt').each do |line|
  # do something with a lineend


长风秋雁
浏览 440回答 3
3回答

MMTTMM

为什么对于普通的文本文件I/O来说,“快速”不是一种很好的做法?铁皮人打对了。我还想补充一句:在许多情况下,将整个文件读入内存是不可处理的(因为文件太大,或者字符串操作具有指数O()空间)通常情况下,您无法预测文件大小(上述特殊情况)。您应该始终注意内存的使用情况,如果存在其他选项(例如逐行),那么一次读取所有文件(即使是在琐碎的情况下)并不是很好的做法。我从经验中知道,VBS在这个意义上是可怕的,一个人被迫通过命令行操作文件。这一概念不仅适用于文件,也适用于任何其他进程,在这些进程中,您的内存大小迅速增长,并且必须同时处理每一次迭代(或行)。发生器函数帮助您处理过程,或逐行读取,以便不处理内存中的所有数据。顺便说一句,Python在读取文件In和ITSopen()方法设计为默认情况下逐行读取。见“改进Python:“产量”和生成器解释“这解释了生成器函数的一个很好的用例示例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby