【发布时间】:2010-10-30 14:30:47
【问题描述】:
CPU 缓存总是会中断我们测试某些代码的性能。
gettime();
func1();
gettime();
gettime();
func2();
gettime();
// func2 is faster because of the cache.(or page faults of func1())
// But we often misunderstand.
在衡量代码性能时,如何消除缓存的影响。
我正在寻找一些在 Windows 中执行此操作的功能或方法。
请给我你的好建议。谢谢。
【问题讨论】:
-
如果没有任何缓存,性能通常会很糟糕。我宁愿尝试在代表性(即缓存)平台上测量代表性工作负载。
-
你想像题主说的那样时不时清空缓存吗?还是您想像问题本身所说的那样完全禁用缓存?
-
我想公平地运行这些功能。就这样。如果 func1 没有被缓存,则 func2 也不能被缓存。如果 func1 导致页面错误,则 func2 也会。当然,我希望它们都不会导致页面错误。
标签: windows winapi caching virtual-memory