你的位置:首页 > ASP.net教程

[ASP.net教程]C#泛型的性能优势


  我写东西一向追求短小精悍,就不放代码去验证的,只说结论,并会与Java泛型做对比。有不对之处还望指出。

  泛型作为一个在C#2.0中就引入的特性,也是C#的重要特性之一,我经常看到有人讨论泛型带来的便捷性和(一定程度上的)安全性,却很少见有人说泛型的性能优势,要么点到即止要么泛泛而谈说得太复杂——可能仅仅是因为我孤陋寡闻吧……

  好了,废话不说了,以下是结论:

 

  如果你要用一个ArrayList add一个byte,我们看看会发生什么。

  假设在一个32位CLR上,对对象进行装箱要消耗8字节,用4字节存储数据(因为要向上取整),还有4字节是引用——这就用了16字节了。而如果使用List<byte>,因为类型参数已经确定,每一个byte只会产生1字节用来储存。

  再来看JAVA的泛型……JAVA大家都知道了……因为类型擦除,泛型没有什么性能优势,还是相当于一个普通的ArrayList,要对所有类型进行类似C#中的“装箱”,唯一的好处就是安全性了。

 

  一路写下来好像没什么好说的……为什么要说这个呢,请看类标题。我有一个不成熟的乐趣就是吹.NET黑JAVA,突然想起一点就记下来了……