gpt4 book ai didi

c++ - 使用页面文件进行缓存?

转载 作者:行者123 更新时间:2023-11-30 00:59:46 30 4
gpt4 key购买 nike

我必须处理通常无法放入主内存的大量数据。我访问此数据的方式具有很高的局部性,因此将部分数据缓存在内存中看起来是个不错的选择。仅 malloc() 一个巨大的数组,并让操作系统确定哪些位要分页,哪些位要保留是否可行?

最佳答案

假设数据来自一个文件,你最好对那个文件进行内存映射。否则,您最终要做的是分配您的数组,然后将数据从您的文件复制到数组中——并且由于您的数组映射到页面文件,您基本上只是将原始文件复制到页面文件,并在此过程中污染“缓存”(即物理内存),因此当前事件的其他数据更有可能被驱逐。然后,完成后(通常)将数据从数组写回原始文件,这(在这种情况下)意味着从页面文件复制回原始文件。

内存映射文件只是创建一些地址空间并将其直接映射到原始文件。这避免了将数据从原始文件复制到页面文件(并在完成后再次复制)以及在从原始文件到页面文件的过程中将数据临时移动到物理内存中。当然,最大的胜利是当/如果原始文件中有大量您根本没有真正使用过的部分(在这种情况下,它们可能根本不会被读入物理内存,假设未使用的 block 至少是一个页面尺寸)。

关于c++ - 使用页面文件进行缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3756144/

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