In response to my WinFS API Lean and Mean post, points out that for ObjectSpaces, “Andrew Conrad has lead us to believe that the 30% performance loss is due to object creation.“ The full quote from Andrew's posting is:
In general, this performance difference comes from the materializing of the objects and some overhead from the mapping layer. Note – if one was to materialize their own objects over the SqlDataReader, they probably won’t see a significant difference between ObjectSpaces and their custom solution.
Some of the overhead is mapping. Some is object creation. The WinFS API reduces the object creation overhead to a minimum by taking advantage of the fact that WinFS objects are derived from our base class.
Andrew goes on to say:
So unless one does a join on the server and then normalizes the results them self, it will be hard to beat the ObjectSpaces’ performance. As the hierarchy becomes deeper and more complex, this performance gain will be more noticeable.
In the end, objects have costs and benefits. I assert the benefits out weight the costs. Achieving good performance is a priority zero requirement for us and we'll probably still be tweaking things as they pry the bits from our carpel-tunneled hands for pressing onto CDs (DVDs?).