加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Ruby中读取输入的最有效方法

发布时间:2020-12-17 02:28:00 所属栏目:百科 来源:网络整理
导读:在 Ruby中,读取巨型文本文件的最有效方法是什么?大约107行,89字节/行.一种方法明显优于另一种吗? 解决方法 我一段时间做了一些基准测试,看看加载文本文件的好方法.最快的是读取文本块,然后使用String.lines迭代它们. 读取188,593,869字节的文本文件作为基
在 Ruby中,读取巨型文本文件的最有效方法是什么?大约107行,89字节/行.一种方法明显优于另一种吗?

解决方法

我一段时间做了一些基准测试,看看加载文本文件的好方法.最快的是读取文本块,然后使用String.lines迭代它们.

读取188,593,869字节的文本文件作为基线:

IO.foreach(ARGV.shift) do |li|
  print li
end

time ruby test.rb root.mbox > /dev/null
# 
# real    0m3.949s
# user    0m3.709s
# sys     0m0.182s

我将其转储到/ dev / null以从时间中删除屏幕I / O.

而不是逐行读取,将其加载到一个大块中然后迭代线:

File.read(ARGV.shift).lines do |l|
  print l
end

time ruby test.rb root.mbox > /dev/null

real    0m3.492s
user    0m3.281s
sys     0m0.209s

那是0.5秒的节省.它还吸收了188MB的数据,如果你有更大的文件,它几乎不能很好地扩展.好的是你可以告诉它加载整个文件,我做了,使用read()或告诉它限制读取大小.

这是wc为文本文件清理的输出,供您参考:

lines: 2,465,369
words: 26,466,463
bytes: 188,869

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读