Por que o bloqueio duplo verificado é 25% mais rápido em Joshua Bloch Exemplo efetivo de Java

Oi abaixo é o trecho de Efetivo Java 2nd Edition. Aqui o autor alega que o seguinte trecho de código é 25% mais rápido do que no qual você não usa a variável de resultado. De acordo com o livro "O que essa variável faz é garantir que o campo seja lido apenas uma vez no caso comum em que ele já foi inicializado". . Eu não sou capaz de entender por que esse código seria rápido depois que o valor fosse inicializado como comparado a se não usarmos o resultado da variável Local. Em ambos os casos, você terá apenas uma leitura volátil após a inicialização, quer você use o resultado da variável local ou não.

// Double-check idiom for lazy initialization of instance fields 
private volatile FieldType field;

FieldType getField() {
    FieldType result = field;
    if (result == null) {  // First check (no locking)
        synchronized(this) {
            result = field;
            if (result == null)  // Second check (with locking)
                field = result = computeFieldValue();
        }
    }
    return result;
}

questionAnswers(2)

yourAnswerToTheQuestion