Я измеряю скорость жесткого диска с помощью написанной мной программы. (Это своего рода домашнее задание, поэтому мне не нужны рекомендации о существующих инструментах для этого).

Я делаю это с помощью следующего фрагмента кода:

    for(int attemptNumber =0; attemptNumber < ATTEMPTS; attemptNumber++) {

        long start = System.currentTimeMillis();
        BufferedReader bf = new BufferedReader(new FileReader(FILENAME));
        int c = 0;
        while((c = bf.read()) != -1) {

        }
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }

На выходе первое число обычно в 3 раза больше любого из следующих:

14234
5130
4859
... etc

При перезапуске приложения я получаю те же результаты: первое чтение происходит примерно в 3 раза медленнее. Почему это происходит?

РЕДАКТИРОВАТЬ: Я не уверен, что это правильный SO сайт, чтобы спросить, где я должен опубликовать это?

1 ответ1

2

Большинство операционных систем и некоторое оборудование также поддерживают кеш диска. Первое чтение с реального диска и медленное, но последующее чтение происходит из более быстрого кэша.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .