@grikdotnet, attention, here is extra object creations.
Method "CActiveRecord::getMetaData()" is invoked at "CActiveRecord::__construct()", so it is invoked at every new Active Record object.
Here you are invoking "CActiveRecord::generateMetaData()" per each(!) new created active record instance.

Originally the instance of "CActiveRecordMetaData" is shared(!) between all Active Records of the same class.
This instance was stored at "CActiveRecord::$_models[$className]->_md" - at the "finder" object.
It was attached to the particular instance from the <code>self::model(get_class($this))->_md;</code>, but created only once(!) at "CActiveRecord::model()".