Czy jest lepszy sposób (wydajność) obliczenia fibonacci niż ten?

Zrobiłem ten kod .. I muszę uzyskać to, co najlepsze. Naprawdę potrzebuję najlepszej wydajności obliczania liczb fibonacciego ...

Przeczytałem kod tego typu obliczeń i myślę, że mam najlepszy z nich ...

Uwolnij to dla mnie .. plz ..

ps: I naprawdę potrzebuję BigIntegera .. Obliczę Fibonacciego ogromnych liczb

ps2: Obliczyłem kilka dużych liczb za pomocą tego algorytmu i otrzymałem świetny czas odpowiedzi .. ale muszę wiedzieć, czy może być lepiej

ps3: aby uruchomić ten kod, musisz użyć tego argumentu VM-Xss16384k (StackSize)

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

questionAnswers(3)

yourAnswerToTheQuestion