Currently, quite a lot of space seem to be taken up by not-filled instvars.
In my Delphi based Whitestar model, 406085 out of 664371
are either nil or empty sets. In a JHotDraw model from inFusion
it is 724408 out of 1351527
Stephan
FAMeasurements>measure
varSize := mClass instSize.
instSize := mClass allInstances size.
nrNil := 0.
nrEmpty := 0.
mClass allInstancesDo: [ :instance |
1 to: varSize do: [:varIndex | |value|
value := instance instVarAt: varIndex.
value ifNil: [ nrNil := nrNil+1 ].
value isCollection ifTrue: [
value ifEmpty: [ nrEmpty := nrEmpty+1 ] ] ] ]
MeasureFAMIX>initializeMeasurements
FAMIXEntity withAllSubclassesDo: [ :each |
self measurements add: (FAMeasurements new
mClass: each;
yourself). ]
MeasureFAMIX>run
self initializeMeasurements.
measurements do: [ :each | each measure]
MeasureFAMIX>sum
nrOfVars := 0.
nrEmpty := 0.
measurements do: [ :measurement |
nrOfVars := nrOfVars + (measurement varSize * measurement instSize).
nrEmpty := nrEmpty + measurement nrEmpty + measurement nrNil].
In Famix-SelfMeasurements on smalltalkhub