【问题标题】:I/O performance comparison not confounded by cachingI/O 性能比较不受缓存影响
【发布时间】:2020-04-05 03:03:46
【问题描述】:
我想比较两个不同的软件程序(一个是单线程的,另一个是多线程的)将一组文件从(网络)驱动器加载到内存中的时间性能。从我的比较中尽可能消除缓存的(混淆)影响的最佳方法是什么?我注意到,使用一组新文件的任何一个程序的第一次运行都比使用相同文件集的同一程序的后续运行慢得多。对每个文件集运行每个程序至少两次并记录上次运行的时间性能是否合理?
【问题讨论】:
标签:
performance
caching
io
performance-testing
【解决方案1】:
为了让我理解这一点,您向软件发出请求,软件将文件带入内存并返回某种响应。
鉴于此,可能会发生两种类型的缓存,
1) 软件本身可能会缓存请求:您需要了解软件如何缓存请求并相应地更改请求路径、查询字符串或标头
2) 内存缓存不会再次上传文件,除非它是一个新文件 - 如果是这种情况,那么您可能希望将 TTL 设置为零并且它是 LRU 缓存然后减少缓存大小足够小,以便在您再次执行测试文件之前缓存会翻转。
此外,大多数软件都会在响应中以缓存命中或未命中信息进行响应,因此您可能需要注意这一点。
希望这会有所帮助。