A few weeks ago I spoke at Gamefest 2007 where I delivered this talk:

The Costs of Managed Code: The Avoidable and the Unavoidable

This talk is for those who want to understand the inescapable performance consequences of the managed programming method: the things you cannot avoid and the things you can. The presentation explains those few characteristics of managed code, such as array bounds checking, application domain isolation, and write barriers, that profoundly affect the code generation at a primitive level. Comparing and contrasting the consequences for the .NET Compact Framework and the classic .NET runtime, the talk explains the reasons for these overheads, the benefits they provide, and what practices minimize the associated costs. Additionally, we discuss some commonly occurring costs, such as boxing, that aren't inherent to all managed code, and we offer some tips for minimizing those costs. Speaker: Rico Mariani

The talk was based on an older article that I wrote on Qualitative Code Differences in Managed Code which was itself based on an internal paper written by my colleague Vance Morrison (thank you again Vance).

You can see the talk at the XNA Content Creators Site and I encourage you to look at the other talks too as this whole series was very popular and many of the concepts are broadly useful.