我的测试结果:
(循环是1024*100次)
NonGeneric: 180-190 ms (第一次770ms?)
Generic: 220-230 ms
相差没这么大。
ArrayList:
NonGeneric: 240 - 250ms
Generic: 240 ms

解决方案 »

  1.   

    PIII1133M,256M,
    jdk1.5.0 beta2
      

  2.   

    我也非常反对范型,我认为根本没有必要。首先,java的范型之旅不会带来效率提升,甚至是反其道而行(无论在编辑还是运行方面)首先声明,本人对范型还有C++都不是非常熟悉,可能有些言论实乃大谬,望各位能够不吝指正。其次,虽然不止Collection能用到范型,但Collection乃是最能代表的,所以我只讨论它们。C++由于没有像java.lang.Object那样的"元始天尊",无论存还是放,都要用到范型机制
    反观java,由于Object的存在,因此,java的Collection中存是绝对没有问题的。当然原生类型另当别论,所以相对<T>而言,我更支持自动拆封箱。不过,这个仍然会带来一些问题,比如向一个存放了非原生类型数据或者NullPointer或者根本就是没有东西的Map索要原生类型数据,会导致什么结果,Exception or 0 or default? 可能还需商榷。另外,通常情况下,存放数据与取数据的都是受(程序设计)控制的,我认为,不需要强制要求检查存放类型。对于取而言,现有的方案也并不是不能忍受的。首先,放进去的虽然具体类型不一,但肯定是某一类的东西,我们要的是多态。拿出来之后,我们仅需从Object强制转型到这个统一的父类型即可,这个可能是范型与非范型相比,差异最大的地方。少数情况下,会有若干种无关类型(及子类型),可能会用到instanceof。但是如果碰到了无数种类型,向大杂烩那样放在某个Collection里面,那么这个肯定是程序设计出了问题,即使范型也无能为力。再者,改造JVM的代价,使得java的范型无论如何不可能产生革命性变革,导致大量好处,因此我个人在编写程序的时候,一般是不会考虑Generic的
    〉NonGeneric: 180-190 ms (第一次770ms?)java测试的时候我也发现过类似问题,同样的程序,同样的参数,运行过程和运行结果,第一次总是很慢,而紧接着的后面几次,效率会得到大幅度提升,不知道是不是什么东西在哪里进行了缓存?jvm, 应该不会,测试时每次我都是在控制台打java -cp ......, JVM应该已经退出
    windows,没研究过
      

  3.   

    C #也要支持范型了
    这东西应该还是有用的,至于实现的效率低,那是sun的问题
      

  4.   

    C#即使是范型我也不认为会提高多少效率C++离不开,那是C++的问题