gpt4 book ai didi

haskell - 1GB Vector,Vector.Unboxed会麻烦,Vector.Storable会不会麻烦?

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

我们需要在内存中长时间(几周到几个月)存储大量的 1GB 连续字节,并且正在尝试选择向量/数组库。我有两个担心,我找不到答案。

  • Vector.Unboxed 似乎将底层字节存储在堆上,GC 可以随意移动这些字节。定期移动 1GB 的数据是我想避免的。
  • Vector.Storable 通过将底层字节存储在 c 堆中来解决这个问题。但是我读过的所有内容似乎都表明这实际上仅用于与其他语言(主要是 c)进行通信。是否有某些原因我应该避免将 Vector.Storable 用于内部 Haskell 使用。

  • 如果有意义,我愿意接受第三种选择!

    最佳答案

    我的第一个想法是the mmap package ,它允许您将文件“内存映射”到内存中,使用虚拟内存系统来管理分页。我不知道这是否适合您的用例(特别是,我不知道您是否正在加载或计算这 1GB 的数据),但它可能值得一看。

    特别是,我认为这可以防止 GC 移动数据(因为它不在 Haskell 堆上,它由操作系统虚拟内存子系统管理)。另一方面,这个接口(interface)只处理原始字节;比如说,你不能拥有 Customer 的数组。物体什么的。

    关于haskell - 1GB Vector,Vector.Unboxed会麻烦,Vector.Storable会不会麻烦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30038084/

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