はじめに 個人的にはやめろとか思うのですが、よくバックエンドのロジックで、こんな風なのを毎回実行しているコードを見かけます。 model.GetType().GetProperty("Name")?.SetValue(model, "aaa"); 以下のことを思います。 GetProperty は毎回取得する必要がない、 リフレクションだから遅い。 素直にName="aaa" として静的コード実行したほうが早い。 せめて式木でキャッシュしてください。 1個WebApiとかで、1個の要求として考えたらたらたいしたことないけどサーバー全体して考えて、かつ共通である程度のロジックから呼び出せれているなら早く終わるコードの方がよい。 .NET5 とか.NET 6とかでリフレクション速度改善されているなんて声も聴きベンチマークをしてみました。 ※2023/11/12 追記各Runtimeごとの性能を
![C# のリフレクションの性能を図る。前から気になっていることを調べてみた - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/11f30612fcbc25fea98636b7b59e57bd66fc11c6/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9QyUyMyUyMCVFMyU4MSVBRSVFMyU4MyVBQSVFMyU4MyU5NSVFMyU4MyVBQyVFMyU4MiVBRiVFMyU4MiVCNyVFMyU4MyVBNyVFMyU4MyVCMyVFMyU4MSVBRSVFNiU4MCVBNyVFOCU4MyVCRCVFMyU4MiU5MiVFNSU5QiVCMyVFMyU4MiU4QiVFMyU4MCU4MiVFNSU4OSU4RCVFMyU4MSU4QiVFMyU4MiU4OSVFNiVCMCU5NyVFMyU4MSVBQiVFMyU4MSVBQSVFMyU4MSVBMyVFMyU4MSVBNiVFMyU4MSU4NCVFMyU4MiU4QiVFMyU4MSU5MyVFMyU4MSVBOCVFMyU4MiU5MiVFOCVBQSVCRiVFMyU4MSVCOSVFMyU4MSVBNiVFMyU4MSVCRiVFMyU4MSU5RiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9M2M0YmJmZjQxNmRkY2FhZTQxZDY3ODM1ODg5ZjQ5M2Y%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwcmVpbWVpMjAyMCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ODE5YWJkZGM1NDFmYzQ0M2ZkMjExNDBjYjY2ZjQ3YTY%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D4d10da223ace93075191a82b86e9dd80)