Security und Performance
Wir haben die Security-Objekte: S0,S1, S2 und X0.
S0 trifft eine Aussage für alle Objekte einer Klasse bzw. davon abgeleiteter Klassen.
S1 beschreibt eine abweichende Aussage für eine bestimmte abgeleitete Klasse und S2 nur für ein ganz bestimmtes Objekt.
X0 beschreibt alle übrigen Fälle - d.h. für die Objekte anderer Klassen.
Man kann die Objekte wie folgt in einem Security-Set zusammenstellen:
Set = { S2,S1, S0, X0 }
und erhält das gewünschte Verhalten.
Ein Alternative ist:
Set = { S0, X0}
|
spezializations
|
S1
|
spezializations
|
S2
Das Resultat ist das gleiche, aber für den Zugriff auf ein Objekt, für das X0 eine Aussage macht, werden jetzt 2 überflüssige Tests eingespart.
Security-Objekte werden dauernd gelesen, ganz selten geschrieben. Deshalb ist es sinnvoll:
- für CX_SECURITY_SET ein eigenes Segment zu vergeben
- alle anderen Security-Objekt als Slave-Objekte diesem zuzuordnen. Damit liegen die aktiven Security-Objekte mit großer Wahrscheinlichkeit eng zusammen auf nur wenigen Pages.