As far as performance goes there isn't any difference between InheritedExport and Export while doing the catalog discovery, which is when this work is done not at composition time, because in both cases we have to look for InheritedExport and Export
First a little background on InheritedExport, its primary purpose is for legacy systems which used to just find all types that implement a given interface, this gives an easy migration path for such systems. The other use of it is for people who want
to completely hide MEF from the extension authors.
Now with those two purposes in mind you generally should not mix and match InheritedExport and Export on the same type hierarchy and if you do you will actually get the extension exported more than once. It will be exported via the InheritedExport
and the Export attribute, with potentially the same contract name.