好吧,我们都知道反射的性能比“新建”一个类实例要低很多倍,而且在很多情况下这很好,具体取决于应用程序的要求。
问题:我们如何使用后期绑定(bind)(反射)策略创建高性能 .NET 类。
我有一个现有要求,要求使用反射 (CreateInstance) 创建类实例,但性能至关重要。在我的情况下,我正在为我们应用程序中的每个传入 SMS 消息创建实例。在生产期间,这很容易每天超过一百万。
我想听听并分享一些关于如何在不直接引用代码中的类的情况下创建 .NET 类的想法,例如使用反射。我也在想是否有办法以某种方式缓存可以缩短“创建”时间的类工厂
最佳答案
一天一百万不算多;我只是使用 Activator.CreateInstance
(使用 Activator.CreatInstance(Type)
的快速测试表明在我的笔记本电脑上它可以从 Type 创建 1M 对象
在 ~2 秒内)。
关于快速创建对象的思考:
- 使用泛型和
: new()
约束(零努力) - 使用
DynamicMethod
并编写 IL(不难)
此处显示了 new
方法的实现(不需要 : new()
外部约束):ObjectFactory.cs
.
有关 IL 示例,请参阅 dapper-dot-net和 il.Emit(OpCodes.Newobj, ...)
关于c# - 如何使用反射创建高性能 .NET 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1112194/