それは正確なシナリオに大きく依存しますが、キャッシングのレイヤーが組み込まれているため、期待するほどひどいものではありません (毎回リフレクションを行うわけではありません)。また、操作によって異なる場合もあります (たとえば、「持ち上げられた」nullable-T 操作は著しく遅くなります)。測定する必要がありますが、たまたま、FastMemberを実行したときに取ったメンバー (プロパティ) アクセスのタイミングがいくつかあります。
Static C#: 14ms
Dynamic C#: 268ms
PropertyInfo: 8879ms (aka reflection)
PropertyDescriptor: 12847ms (aka data-binding)
TypeAccessor.Create: 73ms (aka FastMember)
ObjectAccessor.Create: 92ms (aka FastMember)
注意: これらは単一のテスト用であり、シナリオを代表していない可能性があります。このコードはここに示されています
つまり、単純なテストに基づいて、静的な通常の C# よりも約 20 倍遅く、リフレクションよりも約 30 倍高速です。
更新: 興味深いことに、.NET 4.5 でリフレクションが高速化されたようです:
Static C#: 13ms
Dynamic C#: 249ms
PropertyInfo: 2991ms
PropertyDescriptor: 6761ms
TypeAccessor.Create: 77ms
ObjectAccessor.Create: 94ms
ここでは、リフレクションが高速になったため (ダイナミックが遅くなったからではありません)、リフレクションよりも約 12 倍高速です。