我需要bash
在Cygwin环境中对某些命令的速度进行基准测试,并确保我正在运行的测试不会影响Windows缓冲区或缓存。尽管我正在bash
环境中进行基准测试,但我怀疑所有缓存都是由Windows本身而不是Cygwin完成的。
在基于Unix的系统上,您可以执行以下操作清除所有缓存和缓冲区:
echo 3 > /proc/sys/vm/drop_caches
在Windows上等效于此命令?
Twisty是正确的,因为Windows中没有本机工具可以执行此操作。
但是,在进行一些进一步的研究和测试时,似乎SysInternals的Sync工具实际上也没有清除Windows用来缓存文件和数据的内存(也称为文件系统缓存),而Windows将其称为备用内存。这可以通过使用RAMMap来演示,RAMMap是另一个SysInternals工具,用于监视Windows中的所有内存分配。
在运行该Sync
工具之前和之后检查RAMMap的“备用内存”列,表明Windows的备用内存在运行之前和之后实际上保持不变Sync
。实际上,Sync
似乎对内存根本没有任何明显的影响,据我所知,这对于性能测试而言实际上是毫无用处的。
我确实发现了一种有效的编程方法来清除Windows的待机列表,但是,它以EmptyStandbyList.exe的形式出现,它是来自Wen Jia Liu的简单命令行程序:
EmptyStandbyList.exe是Windows(Vista及更高版本)的命令行工具,可以清空:
- 处理工作集
- 修改后的页面列表
- 备用列表(优先级0到7)
- 仅优先级为0的备用列表
要使用它,您需要确保EmptyStandbyList.exe文件位于系统的PATH环境变量内的某个位置,然后EmptyStandbyList.exe
在需要刷新内存时从Shell或从脚本内调用。
在CMD
:
EmptyStandbyList.exe
并在bash
:
cmd \/c EmptyStandbyList.exe
要确认执行后已成功清除Windows的备用内存,可以再次使用RAMMap。
EmptyStandbyList.exe
EmptyStandbyList.exe
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句