Überprüfung der Auswirkungen auf die Leistung bei Verwendung von Java Volatile

Überblick

Eine Memoseite, die die Auswirkungen auf die Leistung bei Verwendung von volatile überprüft.

Was ist flüchtig

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.)

Leistungsüberprüfung

Umgebung zur Leistungsüberprüfung

** 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

Leistung bei Verwendung von flüchtigen

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

Leistung ohne flüchtige

Ä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

Zusammenfassung

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

Überprüfung der Auswirkungen auf die Leistung bei Verwendung von Java Volatile
Umgang mit Zeitzonen mit Java
Unerwartete Ausnahme bei Verwendung von DateTimeFormatter in Java
Zusammenfassung der objektorientierten Programmierung mit Java
Ich habe versucht, Google HttpClient von Java zu verwenden
Statusüberwachung von Java-Apps mit Elasticsearch
Erfassung von Eingabeinhalten mit Scanner (Java)
Geben Sie ClassPath an, wenn Sie jupyter + Java mit WSL verwenden
Versuchen Sie eine ähnliche Suche in der Bildsuche mit dem Java SDK [Suche]
Ein Beispiel, bei dem die Verwendung von Addition schneller ist als die Verwendung von StringBuilder (Java)
Geschichte der Testautomatisierung mit Appium [Android / Java]
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
Überprüfung von [email protected]
[Java] Übersicht über Java
Vergessen Sie nicht setCalendar oder setTimeZone, wenn Sie Java DateFormat verwenden
[Schienen] Beachten Sie bei der Verwendung von Ajax die "CSRF-Maßnahmen".
[Java] Beim Schreiben der Quelle ... Memorandum ①
Leistungsüberprüfung der Red Hat Decision Manager-Planoptimierung
Unterschiede im Code bei Verwendung des Längensystems in Java
[Java] Dinge, die Sie bei der Ausgabe von FizzBuzz beachten sollten
[Java10] Achten Sie darauf, var und generics nicht zusammen zu verwenden