Will-Type.GetType()会根据正在检索的对象的大小和复杂性而减慢速度



我有一个应用程序,它现在正在使用基本反射来获取类。

Type type = Type.GetType(mynamespace.myclassname);
object o = System.Activator.CreateInstance(type);

我想看看反射的运行效率有多高,所以我用这种方式生成了大约150000个对象,看看性能是否下降,性能是否快速稳定。

然而,这让我思考:根据传递到GetType()方法中的类的大小和复杂性,对Type.GetType()的调用是否真的会减慢?

例如:假设我们想使用GetType()来检索一个由30个私有变量、30个私有方法和30个公共方法组成的复杂类,而这个类只有一个非常简单的公共Add(int,int)方法,该方法将两个数字相加。

如果传入的类是复杂类而不是简单类,那么Type.GetType的速度会显著减慢吗?

感谢

根据我对事物的理解,(我只是一个经验丰富的程序员,我不是该语言的创建者之一)所引用的类的复杂性丝毫不会影响GetType()的性能。

实例化类的复杂性当然会影响CreateInstance()的性能,但这是意料之中的:类越大,包含的东西越多,需要执行的代码就越多,才能完全构建它

也许你混淆了GetType()CreateInstance(),因为我注意到你说"当实例化复杂类和简单类时,Type.GetType会显著减慢吗?"而事实上GetType()不会实例化任何东西,CreateInstance()会。

加载类型时,将创建适合您的类型的Type对象实例。这个(一次性的)过程显然会或多或少地昂贵,这取决于实现的类型。

在此之后,对GetType()的调用将为您提供一个对这个现成实例的引用,因此不会随着时间或复杂性的推移而减弱。

相关内容

  • 没有找到相关文章

最新更新