Video: Telefonleitfaden: Richtig telefonieren 2024
Die Analyse der Performance ist wahrscheinlich eine der komplexesten Aufgaben beim Entwerfen jeder Anwendung. Es ist eine unpräzise Wissenschaft, weil es viele Faktoren gibt, die ins Spiel kommen. Diese werden in EJB-Anwendungen (Enterprise JavaBeans) erweitert, deren Leistung weitgehend von der Implementierung des von Ihnen verwendeten EJB-Containers abhängt. Das Endergebnis ist, dass Sie nicht wissen können, ob Sie die richtigen Leistungsentscheidungen treffen, bis Sie sie testen.
Im Folgenden sind einige Punkte aufgeführt, die Sie bei der Berücksichtigung von Leistungsproblemen beachten sollten:
- Nicht alle EJB-Container sind gleich. Während jeder EJB-Container der EJB-Spezifikation entsprechen muss, haben die Anbieter einen großen Spielraum bei der Implementierung des EJB-Containers. Ihre Anforderungen konzentrieren sich auf die Ergebnisse von Vorgängen und nicht auf die Effizienz einer Operation. Einige Anbieter werden mit verschiedenen Teilen eines EJB-Containers besser abschneiden. Sie müssen bestimmen, wo Effizienzen in einem EJB-Container erzielt werden können und wo Leistungsengpässe auftreten. Der einzige Weg, das mit Sicherheit zu wissen, ist zu versuchen, bevor Sie kaufen. Auch nach dem Kauf einer Lösung sollten wichtige Designentscheidungen, z. B. ob EJB-Entity-Beans verwendet werden sollen, getestet werden.
- Die Leistung kann von der Effizienz Ihrer Anwendung abhängen. Es gibt allgemeine Regeln, anhand derer Sie bestimmen können, welche Anwendungsdesigns besser sind als andere. Aber diese Richtlinien können leicht mit einer schlampigen Implementierung ungültig gemacht werden. Der beste Weg, um schlampige Implementierungen zu vermeiden, besteht darin, regelmäßige Code-Reviews durchzuführen - das ist der Zeitpunkt, an dem Sie mit all Ihren Programmierern zusammen sitzen und Ihre Arbeit überprüfen lassen - während Ihres EJB-Projekts. Sie sollten Ihre Code-Reviews darauf konzentrieren, die Quelle zu analysieren und sicherzustellen, dass sie sowohl gut konzipiert als auch effizient ist. Code-Reviews bieten Programmierern die Möglichkeit, voneinander zu lernen.
- Entwickeln Sie einen Prototyp, um Ihre Leistungsannahmen zu testen. Hier ist ein Beispielszenario. Als EJB-Anwendungsentwickler sollten Sie frühzeitig entscheiden, ob Entity-Beans verwendet werden sollen, um die Interaktion mit einer Datenbank zu verwalten. Ihre zwei grundlegenden Optionen sind:
• Erstellen Sie Entity-Beans, um die Datenbankinteraktion zu verwalten. Entity-Beans können Ihre Datenbankinteraktion aus der Perspektive der Anwendungsprogrammierung vereinfachen. Aber sie können auch eine Leistungsstrafe verhängen. Ein Teil dieser Strafe kann dadurch gesteuert werden, wie Sie Entity-Beans implementieren - das heißt, indem Sie lokale Interfaces im Vergleich zu Remote-Interfaces verwenden oder indem Sie Entity-Beans zu grobkörnigen Objekten machen.
• Code JDBC-Datenbank ruft direkt in Session-Beans auf und vermeidet die Verwendung von Entity-Beans. Es kann schwieriger sein, mit JDBC zu arbeiten, als Entity-Beans mit containergesteuerter Persistenz zu verwenden. Dieser Kurs kann auch Ihre Fähigkeit untergraben, EJB-containergesteuerte Transaktionen zu nutzen.
Um festzustellen, welcher der beiden Kurse besser geeignet ist, können Sie einen einfachen Test durchführen:
1. Erstellen Sie eine Entity-Bean und eine Session-Bean, die beide Vorgänge für denselben Datensatz aus einer Datenbank ausführen.
2. Schreiben Sie ein einfaches Programm, das die Zeit misst, die erforderlich ist, um eine Reihe von Einfügungen, Aktualisierungen, Abfragen und Änderungen an der Datenbank aufzurufen.
Dieses zweite Programm sollte die Session-Bean für einen Test und die Entity-Bean für einen anderen Test aufrufen, wobei für jeden Test die gleiche Gruppe von Operationen ausgeführt wird.
3. Analysieren Sie die Ergebnisse, um festzustellen, ob die Leistung ein Problem darstellt.
Wenn Sie eine detailliertere Leistungsanalyse wünschen, können Sie einzelne Schritte zeitlich festlegen - um die teuerste Operation zu ermitteln - und dann diese Vorgänge ändern, um Leistungssteigerungen zu erzielen.
Bei einer Entity-Bean können Sie die Leistung bei folgenden Operationen messen:
- Wie lange dauert es, bis eine Referenz auf eine Remote-Schnittstelle oder eine lokale Schnittstelle verfügbar ist?
- Was ist der Leistungsunterschied zwischen der Durchführung einer Aktualisierung auf einer Remote-Schnittstelle und einer lokalen Schnittstelle?
- Was ist der Unterschied zwischen der Aktualisierung mehrerer Zeilen in einer Datenbank in JDBC und der Durchführung einer Aktualisierung für mehrere Zeilen mit der home-Methode einer Entity-Bean?
Die Antworten auf diese Fragen unterscheiden sich von EJB-Container zu EJB-Container und werden auch beeinflusst durch: a) den von Ihnen gewählten JDBC-Treiber; b) ob Sie Datenbankverbindungspooling verwenden oder nicht; und c) die Effizienz Ihrer Implementierungen der Entity-Bean und der Session-Bean. Sie werden wahrscheinlich überrascht sein von einigen der Ergebnisse, die Sie erhalten - Tests wie diese können Ihre Annahmen über die Leistung von Entity-Beans in Frage stellen.
Wenn Sie ein EJB auf Leistung einstellen, nehmen Sie keine zufälligen Änderungen vor. Konzentrieren Sie sich stattdessen auf die Schritte in der Anwendung, die hinsichtlich der Leistung am meisten kosten.
Hinweis: Leistungsmessungen zeigen normalerweise, dass ein Geschäftsprozess nur einen oder zwei Punkte hat, an denen signifikante Verbesserungen vorgenommen werden können. Diese Beobachtung wurde so oft gemacht, dass sie zur Pareto 80-20-Regel führte. Diese Regel besagt, dass 80 Prozent der Ausführungszeit eines Programms auf 20 Prozent des Codes zurückzuführen sind. Ihr Ziel sollte es sein, herauszufinden, welche 20 Prozent des Codes am teuersten sind, und sich auf die Optimierung dieses Teils zu konzentrieren.