迭代器方法如each_char
,each_line
如何。比较while-looped getc
,gets
等读取大文件的方法?主要是,使用每种方法的开销是多少,哪一个会使用更多内存,哪一个会更快?
基本上,如果file
是一个100MB的文本文件,哪个内存,开销和速度会更好?
file.each_char{
|ch|
#process ch
}
VS
ch = ""
until(file.eof?)
ch = file.getc
#process ch
end
或者有更好的方法吗?
答案 0 :(得分:0)
您可以使用Ruby Standard Library's benchmark软件包轻松回答类似的问题。
或者有更好的方法吗?
我是这么认为的。虽然C程序可以合理地一次处理一个文件,但Ruby内置了一个高大的字符串和数组功能,这些都是用C编写的,所以它运行得很快。
将一行划分为单词然后只使用一些,或者只计算它们或其他任何东西似乎都没有效率,但它可能比一次解析该行一个字符要快得多,而且更容易阅读必要时重写。
一般来说,我建议Ruby程序利用库并尽可能多地处理尽可能抽象的对象。