我的Java程序大部分时间是在读取一些文件,我希望对其进行优化,例如使用并发、预取或内存映射文件等方式。
没有基准测试的优化是无意义的,所以我进行了基准测试。然而,在基准测试期间,整个文件内容都被缓存在RAM中,不像实际运行中那样。因此,基准测试的运行时间要小得多,并且很可能与实际情况无关。
我需要以某种方式告诉操作系统(Linux)不要缓存文件内容,或者最好在每次基准测试运行之前清除缓存。或者消耗大部分可用的RAM(32 GB),以便只有极小部分文件内容适合缓存。如何做到这一点?
我正在使用Caliper进行基准测试,但在这种情况下我认为它不是必要的(它绝不是微基准测试),并且我不确定这是否是一个好主意。