【发布时间】:2010-11-10 09:26:40
【问题描述】:
我正在编写一个应尽可能实时处理大量数据(1-10 GB 之间)的应用程序。
数据存在于硬盘上的多个二进制数据文件中,每个文件大小在几 kb 到 128MB 之间。当流程开始时,首先要确定实际需要哪些数据。然后通过用户界面获取一些用户设置,然后逐块处理数据,其中总是将文件加载到内存中,处理,然后从内存中清除。这种处理应该很快,因为用户可以更改一些设置,然后重新处理相同的数据,并且这种用户交互应该尽可能流畅。
现在从磁盘加载是相当大的瓶颈,我想在决定使用哪些文件的阶段预加载数据。但是 - 如果我预加载太多数据,操作系统将使用虚拟内存,并且我会遇到大量页面错误,从而使处理速度更慢。
如何确定要预加载多少数据以保持低页面错误?我可以以某种方式影响操作系统对我想保留在内存中的哪些数据吗?
谢谢!
//编辑:我目前在 Windows 7 64 上运行(但该应用程序是 32 位),并且该应用程序不需要在任何计算机上运行 - 仅在特定计算机上运行,因为这是一个研究项目。
【问题讨论】:
-
您应该指定操作系统,因为答案很可能会针对特定平台
标签: c++ windows paging virtual-functions