C++ 使用boost::file\u映射时如何强制页面文件扩展
在我目前的遗传算法中,我迭代了几个相当大的文件。现在,我正在使用C++ 使用boost::file\u映射时如何强制页面文件扩展,c++,windows,performance,c++11,boost,C++,Windows,Performance,C++11,Boost,在我目前的遗传算法中,我迭代了几个相当大的文件。现在,我正在使用boost::file_mapping访问此数据 我有3个不同的测试用例可以启动程序:(我的计算机有8GB内存,Windows 8.1,我对页面文件限制的不同尝试,如下所示) 1000个文件,大约4MB大小,总共4GB。 这种情况是,当第一次执行时有点慢,但从第二次迭代开始,memoryaccess不再是它的瓶颈,速度完全受我的CPU限制 1000个文件,大约6MB大小,总共6GB。 这是一个完全不同的场景。。。第一次迭代的速度是成
boost::file_mapping
访问此数据
我有3个不同的测试用例可以启动程序:(我的计算机有8GB内存,Windows 8.1,我对页面文件限制的不同尝试,如下所示)
如果需要这些信息,我将使用VS Pro 2013。代码的可移植性不是问题,它只需要在我的笔记本上运行。当然,它是一个64位的应用程序,我的处理器支持这一点;) 这是没有道理的。内存映射文件时,内存由该文件支持。它不占用页面文件空间。若您试图将比物理RAM更多的数据映射到内存中,那个么当旧页面从RAM中移出以为当前正在访问的内容腾出空间时,就会发生抖动。页面文件大小不会改变这一点,只会安装更多的RAM(或同时尝试映射更少的数据)。那么如何解释a的行为(从第二次迭代开始提高速度)?它是否真的将所有文件存储在我的RAM中(taskmanager不显示它),而在情况b)和c中它不能这样做)?当数据放入RAM时,它可以全部保留在页面缓存中(即,在RAM中,而不是页面文件中)。这解释了第一次迭代后的加速。