Eine Memoseite, die die Auswirkungen auf die Leistung bei Verwendung von volatile überprüft.
Qualifikation an das Feld angehängt. Bei Multithread-Programmen kann der Thread den Wert des Felds zwischenspeichern. Wenn Sie flüchtig hinzufügen, können Sie es aus dem Cache ausschließen. (Details zur Rolle von flüchtigen Stoffen werden auf dieser Seite weggelassen.)
** Maschinenspezifikation ** CPU:Intel(R) Core(TM) i5-2400S CPU RAM:8GB Betriebssystem: Windows 10 64-Bit
** Ausführungsumgebung ** Eclipse(2020-03 (4.15.0)) Java8
Messen Sie die Verarbeitungszeit, um das Feld vom Typ int 100 Millionen Mal mit hinzugefügtem flüchtigem Zusatz hochzuzählen.
private volatile int cnt = 0;
private long exe() {
long start = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
this.cnt++;
}
long end = System.currentTimeMillis();
return end - start;
}
10-mal mit dem obigen Code gemessen und der Durchschnittswert erhalten.
Ergebnis Durchschnittswert: 964ms
Ändern Sie aus dem obigen Code das Feld in ein Formular, das keine flüchtigen Bestandteile verwendet.
private int cnt = 0;
In ähnlicher Weise wurde die Messung 10 Mal durchgeführt und der Durchschnittswert erhalten.
Ergebnis Durchschnittswert: 7ms
Die Leistung ist schlechter, wenn flüchtige Stoffe verwendet werden, wirkt sich jedoch in den meisten Fällen nicht aus, da das Aufzählen 100 Millionen Mal ungefähr die oben genannte Zeit in Anspruch nimmt.
Recommended Posts