Por que o arquivo de leitura pela primeira vez do disco rígido é mais lento que os próximos?

0

Estou medindo minha velocidade HDD com um programa auto-escrito. (Esse é um tipo de lição de casa, então não preciso de recomendações sobre ferramentas existentes para fazer isso).

Eu faço isso com o seguinte trecho de código:

    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);
    }

Na saída, o primeiro número é geralmente 3 vezes maior que qualquer um dos seguintes:

14234
5130
4859
... etc

Quando eu reinicio o aplicativo, obtenho os mesmos resultados: a primeira leitura é ~ 3 vezes mais lenta. Por que isso está acontecendo?

EDIT: Não tenho certeza se este é o site SO correto para perguntar, onde devo postar isso?

    
por Ilya Smagin 18.09.2014 / 12:21

1 resposta

2

A maioria dos sistemas operacionais e alguns hardwares também mantêm um cache de disco. A primeira leitura é do disco real e lenta, mas as leituras subseqüentes vêm do cache mais rápido.

    
por 18.09.2014 / 12:31