個々の性能を見るとC#はそう悪くない。
GCに関してはここによると
ttp://densanshokunin.at.webry.info/200702/article_1.html
> C++のstack > C#のFinalizeなし > > C++のheap = C#のDispose > C#のFinalize
ということらしい。スタックさいこーで次点がファイナライザなしのGCだそうだ。

C#が遅く感じるのはメタ情報を抱えたままなのが大きいように思える。
必要以上にコードやリソースの破棄と再ロードやページアウトインを繰り返していてこれが足を引っ張ってる。
JITやngenしててもメタ情報を参照するために結局もとのアセンブリもロードされているのが確認できる。
おかげで別の部分がメモリから追い出されることになりやすい。