Has*_*ziz 5 windows cygwin bash cache buffer
我需要bash
在 Cygwin 环境中对某些命令的速度进行基准测试,并确保我正在运行的测试不会命中 Windows 缓冲区或缓存。尽管我是在bash
环境中进行基准测试,但我怀疑所有缓存都是由 Windows 本身完成的,而不是 Cygwin。
在基于Unix 的系统上,您可以执行以下操作来清除所有缓存和缓冲区:
echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
这个命令在 Windows 上的等价物是什么?
Twisty 是正确的,Windows 中没有本机工具可以执行此操作。
然而,在进行一些进一步的研究和测试时,似乎即使是 SysInternals 的 Sync 工具实际上也没有清除 Windows 用于缓存文件和数据的内存 - 也称为文件系统缓存,Windows 称之为备用内存。这可以通过使用RAMMap来证明,这是另一个SysInternals工具,用于监视 Windows 中的所有内存分配。
在运行该Sync
工具之前和之后检查 RAMMap 的 Standby Memory 列显示,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
Run Code Online (Sandbox Code Playgroud)
并在bash
:
cmd \/c EmptyStandbyList.exe
Run Code Online (Sandbox Code Playgroud)
要确认执行后 Windows 的待机内存已成功清除,您可以再次使用 RAMMap。
EmptyStandbyList.exe
EmptyStandbyList.exe
归档时间: |
|
查看次数: |
2073 次 |
最近记录: |