¿Hay una mejor manera (rendimiento) de calcular fibonacci que esta?

Hice este código ... Y necesito obtener lo mejor ... Realmente necesito el mejor rendimiento para calcular los números de fibonacci. Por favor, ayuda ...

He leído un código de este tipo de cálculo y creo que obtuve el mejor de ellos.

Maltrata esto por mi .. por favor ..

ps: Y realmente necesito el BigInteger ... Calcularé Fibonacci de números enormes

ps2: he calculado algunos números grandes con este algoritmo y obtuve un gran tiempo de respuesta ... pero necesito saber si podría ser mejor

ps3: para ejecutar este código necesitarás usar este argumento de VM-Xss16384k (Tamaño de la pila)

public class Fibonacci {

    private static BigInteger[] fibTmp = { BigInteger.valueOf(0), BigInteger.valueOf(1) };

    public static BigInteger fibonacci(long v) {

        BigInteger fib = BigInteger.valueOf(0);

        if (v == 1) {

            fib = BigInteger.valueOf(1);

        } else if (v == 0) {

            fib = BigInteger.valueOf(0);

        } else {

            BigInteger v1 = fibonacci(v - 1);
            BigInteger v2 = fibTmp[(int) (v - 2)];

            fib = v1.add(v2);
        }

        synchronized (fibTmp) {

            if (fibTmp.length - 1 < v)
                fibTmp = Arrays.copyOf(fibTmp, (int) (v + 10));

            fibTmp[(int) v] = fib;
        }

        return fib;
    }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta