gpt4 book ai didi

ruby - 在 Ruby 中解析大文件的最快方法

转载 作者:数据小太阳 更新时间:2023-10-29 07:00:31 27 4
gpt4 key购买 nike

我有一个大约 150 MB 的简单文本文件。我的代码将读取每一行,如果它与某些正则表达式匹配,它就会写入输出文件。但是现在,遍历文件的所有行(几分钟)只需要很长时间,就像

File.open(filename).each do |line|
# do some stuff
end

我知道循环遍历文件行需要一段时间,因为即使我对“#do some stuff”中的数据不做任何操作,它仍然需要很长时间。

我知道一些 unix 程序几乎可以立即解析这样的大文件(比如 grep),所以我想知道为什么 ruby​​ (MRI 1.9) 读取文件需要这么长时间,有什么方法可以让它更快吗?

最佳答案

grep 相比并不公平,因为它是一个高度优化的实用程序,它只扫描数据,不存储任何数据。当您使用 Ruby 读取该文件时,您最终会为每一行分配内存,然后在垃圾回收周期中释放它。 grep 是一个非常精简的正则表达式处理机器。

您可能会发现,您可以通过使用 system 调用的外部程序(如 grep)或通过管道设施来达到您想要的速度:

`grep ABC bigfile`.split(/\n/).each do |line|
# ... (called on each matching line) ...
end

关于ruby - 在 Ruby 中解析大文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5956013/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com