I have noticed in the QGIS source code that the map layers gets added in two different places, in the Canvas and in the registry as follow:
QgsMapLayerRegistry::instance()->addMapLayers(theMapLayers, TRUE);
//! Create the Map Canvas
m_pMapCanvas = new QgsMapCanvas(0, 0);
// Set the Map Canvas Layer Set
m_pMapCanvas->setLayerSet(myRList);
It seems like two separate copies of the map layers is being added to two different places, is there is away to make this more efficient?