gpt4 book ai didi

ocaml - 将大文件读入字符串行 OCaml

转载 作者:行者123 更新时间:2023-12-04 06:21:23 25 4
gpt4 key购买 nike

我基本上是在尝试将一个大文件(大约 10G)读入一个行列表。该文件包含一个整数序列,如下所示:

0x123456
0x123123
0x123123
.....

我使用下面的方法默认为我的代码库读取文件,但结果在这种情况下退出缓慢(约 12 分钟)
let lines_from_file (filename : string) : string list =                                                                                                                                                                                                                                                                                                                       
let lines = ref [] in
let chan = open_in filename in
try
while true; do
lines := input_line chan :: !lines
done; []
with End_of_file ->
close_in chan;
List.rev !lines;;

我想我需要将文件读入内存,然后将它们拆分成行(我使用的是 128G 服务器,因此内存空间应该没问题)。但是我在搜索文档 here 后仍然不明白 OCaml 是否提供了这样的功能。

所以这是我的问题:
  • 鉴于我的情况,如何快速将文件读入字符串列表?
  • 使用 stream 怎么样?但是我需要调整相关的应用程序代码,那么这可能会导致一些时间。
  • 最佳答案

    首先,您应该考虑是否真的需要将所有信息一次性存储在您的内存中。也许逐行处理文件更好?

    如果你真的想一次把它全部放在内存中,那么你可以使用 Bigarray map_file 函数将文件映射为字符数组。然后用它做点什么。

    此外,正如我所见,该文件包含数字。也许最好分配数组(甚至更好的大数组)并按顺序处理每一行并将整数存储在(大)数组中。

    关于ocaml - 将大文件读入字符串行 OCaml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32077398/

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