对于简单的排序,我不能使用超过1.5 GB的4 GB RAM

时间:2012-07-21 10:27:21

标签: macos sorting performance-testing virtual-memory swapfile

我正在使用大约2007年夏季MacBook Pro(x86-64),配备32KB L1(我认为),4MB L2和4GB RAM;我正在运行OS X 10.6.8。

我正在用C ++编写标准基数排序:它从一个数组复制到另一个数组,然后在排序时再次返回(因此使用的内存是数组大小的两倍)。我通过打印'。'来观看它。每百万个参赛作品都被移动了。

如果阵列最多750 MB,那么这些点通常移动得非常快;但是如果数组较大,那么整个过程就会停止。如果我在块中对512 MB进行基数排序然后尝试合并排序块,则第一个块快速进行,然后再次进程停止。也就是说,我的进程似乎只能使用1.5 GB的RAM进行排序。奇怪的是我有4 GB的物理RAM。

我尝试只分配一个8 GB的数组,并通过它编写每个字节并打印'。'每百万字节;似乎一切都开始减慢大约1.5 GB并保持在那个速度甚至超过4 GB,当我知道它必须进入磁盘;所以操作系统开始将页面写入大约1.5 GB的磁盘。

我想用我的机器对大型数组进行排序。我怎么告诉我的操作系统至少给我的进程,比如3.5 GB的RAM?我尝试使用mlock(),但这似乎更慢了。想法?

0 个答案:

没有答案