Повторяя Грэга, способ обойти эту проблему - убедиться, что набор данных, с которым вы работаете, значительно превышает объем доступной оперативной памяти. Если вы проводите тестирование на аппаратной платформе, которая также включает в себя значительное количество кэшей на основе контроллера и диска, вам следует убедиться, что вы также превышаете эти значения. Это гарантирует, что производительность, которую вы видите, больше связана с реальной производительностью оборудования, чем программная оптимизация, представляемая всеми этими уровнями кэша.
Тем не менее, если вы действительно просто хотите очистить кэш чтения полезных данных, прежде чем запускать тесты, которые ХОТИТЕ использовать кэш чтения, способ сделать это - прочитать в одном файле размером прямо под вашей памятью чтения кеша. и сделать некоторые файловые операции с ним. Это очистит кеш и заполнит его одним большим файлом. Как только вы закроете его, ваш кэш будет очищен от данных, которые вам нужны . Самое сложное - выяснить, насколько большим должен быть этот файл, который в наши дни вполне может быть порядка 3 ГБ; в этот момент вам может понадобиться несколько 1ГБ мусорных файлов, чтобы это работало.