Java-Leistung Kapitel 2 Ansatz für Leistungstests

O'Reilly Japan \ -Java Performance Zusammenfassung von Kapitel 2 dieses Buches

Kapitel 1 Einführung \ -Qiita ← Vorheriger Artikel Kapitel 2 Ansatz für Leistungstests --Qiita ← Dieser Artikel Kapitel 3 Java Performance Toolbox \ -Qiita ← Nächster Artikel Kapitel 4 Mechanismus des JIT-Compilers \ -Qiita Kapitel 5 Grundlagen der Speicherbereinigung \ -Qiita

Test in realer Anwendung

Es gibt 3 Arten von Tests

Mikro-Benchmark

Wie der Name schon sagt, wird in kleinen Einheiten getestet.

Wird beim Vergleich kleiner Implementierungsunterschiede verwendet. Beim Schreiben von Testcode ist Vorsicht geboten. Wenn der Code nicht die Verarbeitungsergebnisse verwendet, wird die Berechnungsverarbeitung durch die Optimierung des Compilers gelöscht.

Unabhängig davon, ob die Mikrobank Multithread- oder Singlethread-Threads ist, ist es wichtig, "flüchtig" hinzuzufügen (nicht optimiert, wird auch verwendet, wenn Sie keinen Cache erstellen möchten). Bei Mikro-Benchmarks wird die Synchronisation, die im tatsächlichen Betrieb selten ein Problem darstellt, häufig zu einem Engpass, dessen Behebung einige Zeit in Anspruch nimmt.

↓ Referenzmaterial zu flüchtigen Bestandteilen Declaring a Variable Volatile (Writing Device Drivers)

Im Benchmark wird beim Aufrufen der "synchronisierten" Methode aus mehreren Threads die Synchronisation zu einem Engpass. Daher sollte beachtet werden, dass es sich nicht um einen Benchmark handelt, sondern um eine Messung der Zeit, die die JVM zur Lösung des Konflikts benötigt.

Fügen Sie dem Benchmark-Code keine zusätzliche Verarbeitung hinzu, indem Sie den Eingabewert im Voraus vorbereiten und übergeben.

Der Test sollte auf den richtigen Eingabewerten basieren. Zum Beispiel messen wir nicht mit extrem großen Zahlen, die im tatsächlichen Betrieb nicht möglich sind.

Wie in Kapitel 4 erläutert, wird Java schneller, da der Code wiederholt ausgeführt wird. Daher sollte das Aufwärmen durchgeführt werden.

Makro-Benchmark

Der beste Weg, um die Leistung Ihrer Anwendung zu testen, besteht darin, die verwendeten externen Ressourcen zu kombinieren. Ein solcher Test wird als Makro-Benchmark bezeichnet.

Meso Benchmark

Es ist ein realer Prozess, aber es wird keine vollständige Anwendung verwendet, aber es ist ein feinkörnigerer Test als eine Mikrobank. Zum Beispiel ein Maß dafür, wie schnell ein Webserver reagiert (ich habe die Sitzungs- oder Anmeldefunktionen nicht ausprobiert). Der Meso-Benchmark eignet sich auch für automatisierte Tests.

Durchsatz, Stapel, Antwortzeit verstehen Durchsatz, Stapel, Antwortzeit verstehen

Messung der Stapelverarbeitung

Es misst vom Anfang bis zum Ende einer Anwendung. Wirksam, wenn es als Ganzes keine Rolle spielt. Im Gegenteil, wenn es zu einem Problem wird, wenn es spät vor dem Aufwärmen ist, ist eine andere Messmethode erforderlich. Im Fall von Java ist ein Aufwärmen erforderlich, daher ist es nicht einfach.

Messung des Durchsatzes

Messung, wie viel Verarbeitung innerhalb eines bestimmten Zeitraums durchgeführt werden kann. Beim Client-Server-Typ muss ohne Überlegungszeit gemessen werden (Wartezeit, ohne etwas zu tun). Die Anzahl der Anforderungen pro Sekunde wird häufig verwendet. TPS (Transaktionen pro Sekunde), RPS (Anforderungen pro Sekunde), OPS (Operationen pro Sekunde) usw.

Reaktionszeittest

Es gibt zwei Methoden zur Berechnung der Antwortzeit. Eins ist der Durchschnittswert. Der zweite ist der Perzentilwert. Wenn der 90. Perzentilwert beispielsweise 1,5 Sekunden beträgt, beträgt die Antwortzeit von 90% der Anforderungen 1,5 Sekunden oder weniger und die verbleibenden 10% 1,5 Sekunden oder mehr.

In diesem Buch wurde der Lastgenerator von ↓ vorgestellt About Faban

Instabilität verstehen

Der Test ändert sich im Laufe der Zeit. Ein guter Benchmark verwendet Daten mit unterschiedlicher Zufälligkeit für jeden Lauf, der der realen Welt nahe kommt. Beim Vergleich der Testergebnisse ist es schwierig festzustellen, ob ein Problem mit dem Code vorliegt oder ob es sich um einen Zufall handelt.

Basislinie Probe
Erstes Mal 1.0 Sekunden 0.5 Sekunden
Zweites Mal 0.8 Sekunden 1.25 Sekunden
Drittes Mal 1.2 Sekunden 0.5 Sekunden
Durchschnittswert 1.0 Sekunden 0.75 Sekunden

Im Fall des Testergebnisses hat der t-Test des Schülers eine 43% ige Chance, dass die Leistung gleich ist.

Aufgrund der Unsicherheit in den Daten kann jedoch keine kategorische Beurteilung vorgenommen werden, unabhängig davon, wie viel Analyse durchgeführt wird.

Testen Sie häufig von Anfang an

Es ist wichtig, häufig zu testen, aber es ist notwendig, es mit der aktuellen Situation in Einklang zu bringen.

Frühe und häufige Tests sind äußerst vorteilhaft, wenn Folgendes zutrifft: Weil es einfach ist, Hinweise für Lösungen zu bekommen.

Recommended Posts

Java-Leistung Kapitel 2 Ansatz für Leistungstests
Java-Leistung Kapitel 1 Einführung
Java Performance Kapitel 3 Java Performance Toolbox
Java-Leistung Kapitel 5 Grundlagen der Garbage Collection
Effektives Java Kapitel 2
Effektives Java Kapitel 6 34-35
Effektives Java Kapitel 4 15-22
Effektives Java Kapitel 3
Java-Leistung Kapitel 4 Funktionsweise des JIT-Compilers
Leistungsoptimierung für Java-Apps
45 Techniken zur Optimierung der Java-Leistung (Teil 1)
Ich habe Java Gold gestartet (Kapitel 1-1)
Optimieren Sie Java-Tests mit Spock
Effektive Java 3rd Edition Kapitel 5 Generika
Effektive Java 3rd Edition Kapitel 8 Methoden
Moderne Best Practices für Java-Tests