Until Beta2 LINQ to SQL has not be optimized for performance and turning the expression tree into SQL has all been overhead from what you could have got from going ‘to the metal’ with SQLDataReader. And in some cases there has been a lot of overhead.
Now its important to recognize the productivity to performance trade-off, that is it may be more important to be productive when developing than have a performant system. You can burn a lot of time in development looking for performance wins that are marginal compared to the cost to implement. The goal here is always acceptable performance, which depends on your non-functional requirements.
Still the May 2006 CTP was significantly slower than going to the metal, and probably slow enough that there would be production problems; so, we have been waiting a while for the bits to be baked enough for MS to begin performance work and ship us something that represents performance of the release version.
Rico Mariani has begun blogging about that work now. His first post assesses how bad things are now. Future posts promise to tell us how much improvement we can expect to see in beta2. I’ll definitely be following this one.