Warum sind statische / Mitgliedsvariablen langsamer als lokale Variablen?

Ich habe diesen Thread gesehen:Geschwindigkeit von im Vergleich zu bedingt

Machte meine eigene Klasse, um die Geschwindigkeit zu überprüfen

public class Question {
static long startTime;
static long elapsedTime;

static String mStatic;
private String mPublic;

public static void main(String[] args) {
    Question q = new Question();
    q.executeGlobal();
    q.executeStatic();
    q.executeLocal();
}

public void executeLocal() {
    String mLocal;
    startTime = System.nanoTime();
    for (int i = 0; i < 1000000000; i++) {
        mLocal = "";
    }
    elapsedTime = System.nanoTime() - startTime;
    System.out.println("Type Local: " + elapsedTime + " ns");

}

public void executeGlobal() {
    startTime = System.nanoTime();
    for (int i = 0; i < 1000000000; i++) {
        mPublic = "";
    }
    elapsedTime = System.nanoTime() - startTime;
    System.out.println("Type Global: " + elapsedTime + " ns");

}

public void executeStatic() {
    startTime = System.nanoTime();
    for (int i = 0; i < 1000000000; i++) {
        mStatic = "";
    }
    elapsedTime = System.nanoTime() - startTime;
    System.out.println("Type Static: " + elapsedTime + " ns");
}

}

Ergebnis:

Type Global: 45693028 ns
Type Static: 43853723 ns
Type Local: 2057505 ns

In der Antwort @Rod_algonquin geantwortet, dass es an der liegtgetstatic/putstatisch&nbsp;Bytecode für statische Variable undgetfield/Putfield&nbsp;Bytecode für die Mitgliedsvariable, die durch Bitverschiebung und Addition berechnet wird.

Zuerst habe ich das nur gedachtObjekte&nbsp;verursacht dies, aber beim Versuch, auf das Grundelement zu verweisen, ist das Ergebnis dasselbelocal variable&nbsp;ist immer nochschneller.

Warum ist diese lokale Variable schneller? mit Ausnahme der Bytecode-Erklärung.