微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – GetType()和GetTypes()等反射API的性能如何?

参见英文答案 > How costly is .NET reflection?13个
我在.NET / C#中使用反射API,如GetType()和GetTypes().

>在性能方面,这些API有多好或多坏?我的意思是,这些API是否需要花费很多时间才能导致性能下降,或者这些API是否设计得很好,可以忽略性能问题?
>通常人们在使用反射API时会缓存结果吗?

解决方法

我们不知道“好”和“坏”对你意味着什么.

我们不知道您是否在可能成为应用程序瓶颈的关键性能代码中使用这些代码.

只有您确切知道使用Object.GetType和Assembly.GetTypes时代码将采用的路径.

因此,只有您可以准确地描述这些方法对应用程序性能的使用有多大意义,以及尝试通过缓存提高性能的好处.

我可以告诉你:我从来没有将Type.GetType和Assembly.GetTypes作为我应用程序的瓶颈,而且我没有缓存结果(但是,我需要缓存MemberInfo.GetCustomAttributes,但我只是来到那里在分析器告诉我这是我的应用程序中的一个重要瓶颈并且缓存将大大提高性能之后的结论.

回应你的编辑:

I mean,are these APIs take much time that might cause some performance degradation,or are these APIs well designed to ignore performance issues?

你有什么替代品?如果您需要为给定对象引用Type,或者您需要给定程序集中的所有类型,我向您保证Object.GetType和Assembly.GetTypes是您的最佳选择.问题是,你是如何使用它们的?我们再一次不知道,因此不能告诉你该怎么做.您必须分析这些函数的实际使用情况,并了解它们是否会导致应用程序出现瓶颈.

原文地址:https://www.jb51.cc/csharp/244392.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐