gpt4 book ai didi

c++ - 是否存在跨平台的方式来 boost 预取,以读取大的Boost内存mapping_file?

转载 作者:行者123 更新时间:2023-12-02 10:21:59 24 4
gpt4 key购买 nike

我有一个用于Windows和Linux的C++应用程序(例如Amazon Linux上的Boost 1.53.2),它使用的是 Boost::iostream::mapped_file (即内存映射文件)。 The documentation没有提及“预取”。

该应用程序需要快速顺序读取大型只读文件。有时,这些文件将大于可用内存。因此,无法一次将整个文件加载到内存中。但是在所有情况下,处理都会从头到尾顺序进行。

如果预取即将到来的页面的方式保持在对页面的处理之前(即,即将到来的即将到来的页面在需要它们之前在内存中),而又没有太远而导致尚未处理的页面从内存中删除,那将很有帮助。腾出空间。

我想知道是否有有用的跨平台方法(Windows和Linux)提供提示或指导,或者促进不久的将来将需要自动预提取页面。我希望操作系统可以在某种程度上自动执行此操作,但是我想知道是否应该使用一种便捷的技术来改进默认行为。

提前致谢!

最佳答案

不确定其便携性,但我在此答案中包括了fadvisemadvise:

  • boost file_mapping performance

  • 似乎这里有一些非POSIX窗口的好指针: What is fadvise/madvise equivalent on windows?

    关于c++ - 是否存在跨平台的方式来 boost 预取,以读取大的Boost内存mapping_file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59761253/

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