当前位置:  开发笔记 > 编程语言 > 正文

向下转换的性能有何影响?

如何解决《向下转换的性能有何影响?》经验,为你挑选了1个好方法。

通过阅读Juval Lowy的这篇启发性文章,试图了解Generics

释义..当您定义Generic类定义时,它将被编译为IL.

对于值类型,只要您请求特定的值类型,它就会用您的特定值类型替换T以获取该特定配置的IL,例如,MyList 好处:没有装箱和拆箱惩罚.

对于引用类型,编译器将所有优点...替换为定义中的所有T实例,并创建用于所有引用类型的IL.然而,实例是基于实际请求的ref类型分配的,例如MyList

现在预先泛型我们可以编写带Object参数的方法.泛型声称100%的性能提升是因为它"避免了当您想要使用它时将对象类型向下转换为特定类型时所产生的性能损失"

 // assume GetItem returns an Object
 string sMyPreciousString = (string) obList.GetItem(); 

当您从Object转发到特定引用类型时,这个性能会受到什么影响?此外,它似乎向对象(甚至泛型会做到这一点)的上传不是性能打击..为什么?



1> Jon Skeet..:

向上转换到对象不需要执行时间检查 - 它将始终有效,并且基本上只是一个无操作.

向下转换需要执行时间检查,以确保您没有将Stream转换为String.这是一个非常小的惩罚,并且不太可能成为瓶颈 - 但避免它只是泛型的一个额外好处.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有