0

迭代器方法如each_char, each_line. 等与读取大文件的 while-looped getcgets等方法相比?主要是,使用每种方法的开销是多少,哪种会使用更多的内存,哪种会更快?

file本质上,如果是 100MB 的文本文件,在内存、开销和速度方面哪个会更好?

file.each_char{
|ch|
    #process ch
}

对比

ch = ""
until(file.eof?)
    ch = file.getc
    #process ch
end

或者有没有更好的方法来做到这一点?

4

1 回答 1

0

您可以使用Ruby 标准库的基准测试包轻松明确地回答此类问题。

或者有没有更好的方法来做到这一点?

我认同。虽然 C 程序可能会合理地一次处理一个文件,但 Ruby 具有内置的字符串和数组功能的高耸大厦,而且这一切都是用 C 语言编写的,因此运行速度很快。

将一行拆分为单词,然后只使用几个单词,或者只计算它们,或者其他什么似乎效率不高,但它可能比一次解析该行一个字符要快得多,并且在必要时更容易阅读和重写.

一般来说,我建议 Ruby 程序利用该库并尽可能多地使用尽可能抽象的对象。

于 2012-07-10T17:15:08.900 回答