next up previous contents
Next: Kontrolle der Anforderungserfüllung Up: 4.3 Ergebnisse der Implementierung Previous: 4.3.2 Nichtimplementierte Konzeptteile

4.3.3 Messungen

Um die Leistung des Transaktionsmanagers mit der des Objektspeicher zu vergleichen, wurden die in Tabelle 2.2 aufgeführten Tests mit ihm wiederholt. Die in der folgenden Tabelle aufgeführten Zeiten wurden durch zehntausendfache Ausführung derselben Zugriffe gewonnen. Hiervon wurden jeweils 9999 Zugriffe aus dem 'Cache' befriedigt, so daß die Übertragungszeit zwischen Objektserver und Kern kaum ins Gewicht fällt. Die Übertragungszeit selbst ließ sich nicht feststellen, die Messung der für das Füllen des 'Caches' benötigten Zeit nicht durch mehrmaliges Wiederholen der gleichen Operationen ermittelt werden kann. Eine einmalige Ausführung benötigt hingegen so wenig Zeit, daß die zur Verfügung stehenden Meßmethoden zu ungenau sind. Eine höhere Genauigkeit ließe sich durch sogenanntes 'Profiling' erreichen, der verwendete C0.42mm ++ --Compiler ist aber noch nicht fähig, die dazu benötigte Information zu erzeugen.

 
Table: Zeiten für einen Zugriff bei Objektspeicher und TA--Manager

Die Bedeutung der Suchmusternummern wurde im Zusammenhang mit Tabelle 2.2 erklärt, die Daten der zweiten Spalte aus ihr übernommen. Die Zeiten der dritten und vierten Spalte wurden durch Messungen an der Implementierung des Transaktionsmanagers gewonnen. Die beiden Spalten unterscheiden sich durch die Vorverarbeitung des Anfragedaten. Die von Herrn Pützer übernommenen Suchmuster enthalten bereits OIDs, was im vorgestellten Konzept aufgrund der Veränderlichkeit derselben zwischen verschiedenen Objektserverausführungen gefährlich ist. Für die Messungen von Spalte vier wurde darum eine zusätzliche Stufe eingeschaltet, die den 'Label' einer Proposition in die zugehörige OID umwandelt (entspricht ungefähr einer zusätzlichen Suche mit Suchmuster 2). Die Zeiten in Spalte 3 enthalten diese Stufe nicht und lassen sich darum besser mit den beim Objektspeicher ermittelten Werten vergleichen.

Insgesamt überrascht, daß das die Implementierung des Konzepts teilweise erheblich langsamer als der Objektspeicher ist, obwohl beide ähnliche Datenstrukturen und Algorithmen verwenden. Erklären läßt sich dies zum einen durch den für Gruppen-- und Cacheverwaltung zusätzlich notwendigen Aufwand. Zum anderen wurde bereits in Kapitel 4.2.2 erwähnt, daß in den von Herrn Pützer übernommenen Klassen Auswertungsroutinen die Verwendung von Zeigern vereinheitlicht wurde. Dies hat möglicherweise zu einem verstärkten Kopieren von Objekten geführt und damit den Zeitbedarf erhöht.

Für die Richtigkeit dieser These sprechen die für Suchmuster 8 gemessenen Werte. Der Eintrag in Spalte drei ist keineswegs ein Druckfehler, sondern zeigt den Leistungsverlust durch Kopieren. Suchmuster 8 entspricht dem Suchen einer Proposition mittels ihrer OID. Da eine solche Anfrage maximal ein Ergebnis haben kann, liefert die Suchroutine des Transaktionsmanagers eine Referenz auf diese Proposition. Der Objektspeicher baut hingegen noch eine Struktur auf, die das Backtracking unterstützt. Allein die zur Alloziierung und Initialisiierung notwendigen Operationen verlangsamen die Suche um das siebenfache.

Genauere Untersuchungen darüber, wo am meisten Zeit verloren geht, ließen sich nicht vornehmen, da das hierfür notwendige 'Profiling' nicht durchführbar war.



next up previous contents
Next: Kontrolle der Anforderungserfüllung Up: 4.3 Ergebnisse der Implementierung Previous: 4.3.2 Nichtimplementierte Konzeptteile



Markus Baumeister
Fri Jun 9 15:38:00 MET DST 1995