Buz*_*uzz 6 c++ windows visual-c++
我的环境是XP 32位.我发现当分配的内存几乎是最大大小,2GB,这意味着有一点虚拟空间可用,分配新内存非常慢.
因此,如果我有一个页面文件,我的应用程序需要分析它们.我有两种方法.一种是将它们全部读入系统内存,然后进行分析.另一种是首先将内存缓冲区作为缓存存储,并将页面文件的一部分读入该缓冲区,进行分析然后丢弃,然后读取页面文件的第二部分,并覆盖缓存,再次进行分析.
从分析中看,第二个更快,因为它避免了分配时间成本.
你怎么看?谢谢,谢谢.
(1)我不确定问题是否与标题相符.如果你在32位Windows上分配接近2GB的RAM,系统可能会将大量内存分页到磁盘,而这就是我首先考虑减速的地方.当您使用大量内存时,您应该将其视为存储在磁盘上(在pagefile.sys中),而是缓存在物理RAM中.第二个可能更快,不是因为分配的成本,而是因为一次使用大量内存的成本.实际上,当您将文件复制到一个大的分配中时,您将大部分磁盘 - >磁盘通过RAM复制,然后当您再次运行它进行分析时,您将再次将该副本加载回RAM.如果您的分析是单程算法,则需要进行大量冗余工作.
(2)我认为是mmap文件(MapViewOfFile和Windows上的朋友).
编辑:(3)谨慎.如果该文件目前是1.8GB,那么明年可能会有4GB.如果是这样,我现在计划在32位机器上使用大于2 ^ 32的大小,这意味着要么采用第二个选项,要么仍然使用MapViewOfFile,但是在一个文件中执行一个合理大小的文件块.时间,而不是一下子.否则,当有人在大文件上尝试并报告错误时,您将重新访问此代码.
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |