LotusScript-Profiler

Sowohl LotusScript als auch Java bieten häufig verschiedene Wege zur Realisierung einer Programmieraufgabe. Je nach Lösung ist dabei die Performance des Programmcodes oft unterschiedlich. In der Version 7 steht Ihnen im Domino Designer mit dem Profiler eine Möglichkeit zur Performanceanalyse zur Verfügung.

Notes-Datenbanken umfassen häufig eine große Anzahl von Dokumenten. Eine Suche mit einem Agenten unter Verwendung von LotusScript oder Java erlaubt eine Vielzahl von verschiedenen Möglichkeiten, einzelne Dokumente zu finden und auszuwerten. Der Zugriff kann über alle Dokumente, über eine Ansicht, über eine freie Suche oder auch über die Volltextsuche erfolgen. Je größer die Anzahl der Dokumente, umso wichtiger wird dabei die Performance des Programmcodes. Abhängig von der konkreten Situation
der Datenbank sowie von Ihrer Vorgehensweise bei der Programmierung sind große Zeitunterschiede bei der Abarbeitung des Agenten zu verzeichnen. Die gleiche Problematik ist auch bei den in der Version 7 neuen Web Services vorhanden.

Bei der Analyse und Optimierung Ihres Programmcodes unterstützt Sie der Domino Designer in der Version 7 mit dem Profiler. Diesen können Sie sowohl auf dem Notes Client als auch auf dem Domino Server nutzen. Die Analyse des Profilers beschränkt sich dabei auf die Backend- Objekte, zum Beispiel OpenDatabase("<NameDB>"). Für Standardfunktionen der Sprache, zum Beispiel Open <DateiName>, kann er nicht verwendet werden.

Profiler aktivieren

Die Aktivierung des Profilers nehmen Sie im Eigenschaftsfenster des Agenten bzw. des Web Service vor. Auf dem Register Security befindet sich das Kontrollfeld Profile this agent (Bild 1) bzw. Profile this web service. Nach der Aktivierung dieser Eigenschaft wird bei jeder Abarbeitung des Agenten bzw. Web Service ein Profildokument erstellt. Dabei ist es unerheblich, wer oder was den Start des Agenten veranlasst. Sowohl auf einen zeitgesteuerten als auch auf einen durch ein Ereignis gestarteten Agenten wird der Profiler angewandt.

Bild 1: Die Einstellungen für den Agenten.
Bild 1: Die Einstellungen für den Agenten.

Auswertung der Ergebnisse

Für die Auswertung der Ergebnisse nutzen Sie den Menüpunkt Action/View Profile Results. Wählen Sie den auszuwertenden Agenten in der Agentenliste und rufen Sie den Menüpunkt auf. Das Profildokument wird angezeigt. Neben Angaben zum Namen des Agenten, des Ausführungszeitpunktes sowie der Ausführungszeit erhalten Sie einen tabellarischen Überblick mit folgenden Angaben (Bild 2):

Bild 2: Die Informationen aus dem Profiler.
Bild 2: Die Informationen aus dem Profiler.

  • verwendete Klassen;

  • für die verschiedenen Klassen verwendete Methoden;

  • Art der ausgeführten Operation;

  • Anzahl der Ausführungen pro Methode;

  • Zeit, die pro Methode benötigt wurde.

Die Tabelle ist absteigend nach den Zeitangaben sortiert. Beachten Sie bezüglich der Zeitangaben zwei Punkte: Zum einen sind die Zeiten auf Millisekunden gerundet. Die Anzeige einer 0 bedeutet, dass die benötigte Zeit kürzer war. Zum zweiten gibt die Zeitangabe die Zeit für alle Aufrufe der gleichen Methode an. Um den Zeitaufwand pro Aufruf zur erhalten, dividieren Sie die Zeitangabe durch die Anzahl der Aufrufe.

Der Zugriff auf die Ergebnisse des Profilers ist nicht nur über den Domino Designer möglich. Die neue Methode GetPerformanceDocument der Klasse NotesAgent ermöglicht ebenfalls die Anzeige. Die Methode gibt ein Objekt der Klasse NotesDocument zurück. Übergeben Sie dieses als zweiten Parameter der Methode EditDocument der Klasse NotesUIWorkspace, um die Ergebnisse des Profilers anzuzeigen. Beachten Sie dabei, dass der programmtechnische Zugriff auf das Ergebnisdokument erst erfolgen kann, wenn bereits für einen Agent ein Profildokument in der Datenbank erstellt wurde. Ursache dafür ist, dass die verwendete Maske $BEProfile beim ersten Aufruf des Profilers in einer Datenbank noch nicht im Notes Cache zur Verfügung steht und deshalb das Ergebnisdokument nicht geöffnet werden kann. Nach dem Schließen und erneuten Öffnen der Datenbank steht die Maske zur Verfügung. Unter Umständen müssen Sie Notes komplett schließen und neu starten, um den Cache zu aktualisieren.

Für die Optimierung Ihres Programmcodes gibt Ihnen das Profildokument wichtige Hinweise: Konzentrieren Sie sich auf die in der Tabelle zuerst aufgeführten Methoden. Sie benötigen die meiste Zeit und bieten damit Ansatzpunkte zur Beschleunigung der Programmausführung. Der Vergleich der gemessenen Gesamtzeiten ermöglicht die Bestimmung des in der aktuellen Programmsituation effektivsten Wegs der Problemlösung.