`

泛型的效率和原始类的效率比较(转)

    博客分类:
  • java
阅读更多

 用 了好久的泛型,突然听到有人说:泛型影响效率! 嘿,我这暴脾气! google 了一下,果然有很多人出来测试.最有气的是CSDN 上一个 楞种儿 测试出来 的结果 是:泛型比原始多一倍的时间.我一看测试代码,我就日.2个方法一起执行.后执行的运行时间肯定比先执行的快,应该是缓存的原因吧. 我改了改,弄了一个比较公平的 代码测试.结果我感觉好似 泛型在效率上稍微占点优势.另外看到一位大侠,用汇编语言测试,结果也差不多. 好了,让我们安心的用泛型吧!

 

import java.util.ArrayList;

public class Test {

 static long time = 0; //每次消耗时间
 static long total=0; //总时间
 static float average; //时间平均值

 public static void main(String[] args) {
  for (int i = 0; i < 10; i++) {
   Generic();//泛型
  }
//  for (int i = 0; i < 10; i++) {
//   NonGeneric();//原始类型
//  }
  System.out.println("10次总时间:   " + total + "   ms");//10次消耗时间
  System.out.println("10次平均值:   " + average + "   ms");
 }

 //原始类型
 public static void NonGeneric() {
  long start = System.currentTimeMillis();//开始时间
  ArrayList no_list=new ArrayList();
  for (int i = 0; i < 1000000; i++) {
   no_list.add(new Integer(i)); //添加
  }
  for (int i = 0; i < 1000000; i++) {
   int j = ((Integer) no_list.get(i)).intValue();//取值
  }
  long end = System.currentTimeMillis();//结束时间
  time =(end - start);
  total +=time;
  average = total/10f;
  System.out.println("NonGeneric:   " + time + "   ms");//每次输出消耗时间
 }

 //泛型
 public static void Generic() {
  long start = System.currentTimeMillis();//开始时间
  ArrayList<Integer> list = new ArrayList<Integer>();
  for (int k = 0; k < 1000000; k++) {
   list.add(new Integer(k));//添加
  }
  for (int n = 0; n < 1000000; n++) {
   int m = list.get(n).intValue();//取值
  }
  long end = System.currentTimeMillis();//结束时间.
  time =(end - start);
  total +=time;
  average = total/10f;
  System.out.println("Generic:   " + time + "   ms");//每次输出消耗时间
 }

}

 

 运行环境 硬件:cpu:AMD3k+ ; ram:金士顿ddr1 512*2 ; harddisk:希捷160g 7200转 8m 串

          软件:os: xp ; myeclipse 6.5 ; jdk 1.6

比较如下:

Generic:   375   ms
Generic:   281   ms
Generic:   297   ms
Generic:   235   ms
Generic:   203   ms
Generic:   312   ms
Generic:   219   ms
Generic:   203   ms
Generic:   312   ms
Generic:   219   ms
10次总时间:   2656   ms
10次平均值:   265.6   ms
NonGeneric:   375   ms
NonGeneric:   281   ms
NonGeneric:   297   ms
NonGeneric:   219   ms
NonGeneric:   219   ms
NonGeneric:   312   ms
NonGeneric:   219   ms
NonGeneric:   219   ms
NonGeneric:   312   ms
NonGeneric:   219   ms
10次总时间:   2672   ms
10次平均值:   267.2   ms
分享到:
评论
2 楼 hejiangtao 2012-01-15  
这里只是效率上差不多 但是有些非用泛型的场景 用了没有关系.
1 楼 osacar 2012-01-15  
也就是说泛型也没占多少优势?
可是每次不用泛型就看到eclipse里那黄黄的叹号让我很不舒服!

相关推荐

    泛型用在类和方法上的写法

    在类和方法上使用泛型,可以增强代码的可读性和复用性,避免类型转换的繁琐,并且提高了程序的效率。接下来我们将深入探讨泛型在类和方法上的应用。 ### 一、泛型类 泛型类是在声明类时定义一个或多个类型参数,...

    [Java泛型和集合].

    总之,Java泛型和集合是提高代码质量和效率的关键工具,理解并熟练掌握它们对于成为一名优秀的Java开发者至关重要。通过深入学习本书和相关代码示例,你将能够更好地利用这些特性来编写更安全、更高效的代码。

    SSH泛型代码实例

    SSH泛型代码实例是关于Java编程中的一种...综上所述,SSH框架结合泛型能够提升Java应用的开发效率和代码质量。通过学习和理解这些示例,开发者可以更好地运用泛型技术来优化SSH项目,从而提高软件的稳定性和可维护性。

    java泛型技术之发展

    总结,Java泛型技术的发展极大地提升了Java编程的效率和安全性。它通过编译时检查和类型安全保证,帮助开发者编写出更加健壮和易于维护的代码。理解并熟练掌握Java泛型,是每一个Java开发者必备的技能。

    java 泛型

    10. **反射和泛型**:虽然泛型信息在运行时被擦除,但通过反射可以获取到泛型的原始类型信息,这对于编写一些高级的库和工具非常有用。 通过理解和熟练运用这些知识点,开发者可以编写出更加健壮、可读性更强的Java...

    泛型ref代码

    总之,泛型ref的结合在C#编程中提供了高度的灵活性和效率。通过泛型,我们可以编写通用的代码,而Ref关键字允许我们直接修改方法参数,从而在某些情况下提高程序性能并简化代码。理解并熟练运用这些概念对于任何C#...

    重新理解Java泛型

    然而,可以通过泛型类的原始类型(如`List`而非`List&lt;String&gt;`)以及类的注解来间接获取一些信息。 通过深入理解Java泛型,开发者可以编写更安全、更具可读性和可维护性的代码,同时避免不必要的类型转换和潜在的...

    Java泛型指南中文和英文

    Java泛型是Java编程语言...通过阅读《Java 1.5泛型指南》的中文版和英文版,你可以深入理解这些概念,提高Java编程的效率和安全性。文档中的实例和解释将帮助你更好地运用泛型,避免常见的类型转换问题,提升代码质量。

    Java泛型总结(2)进阶篇

    Java泛型是Java SE 5.0引入的一个重要特性,极大地提高了代码的类型安全性和重用性...理解并熟练掌握这些概念,将有助于提高Java开发的效率和质量。在实际开发中,我们需要根据具体需求灵活运用泛型,以达到最佳效果。

    C# 泛型深入理解介绍

    泛型是C#编程语言中的一个重要特性,自C# 2.0版本开始引入,它极大地提升了代码的重用性和效率。本专题将深入探讨泛型的原理和优势,以及如何利用它们来优化代码。 首先,泛型允许我们在定义类、接口、委托和结构时...

    实例190 - 泛型化的折半查找法

    泛型化是Java编程语言中的一个重要特性,它允许在类、接口和方法中使用类型参数,从而提高了代码的重用性和安全性。实例190 - 泛型化的折半查找法,就是关于如何利用泛型优化传统折半查找算法的一个实践示例。折半...

    LIST泛型排序

    首先,泛型是Java中的一种机制,允许我们在定义类、接口和方法时引入类型参数,从而提高代码的重用性和安全性。例如,我们可以创建一个泛型`List`,如`List&lt;User&gt;`,其中`User`是我们自定义的类,表示用户信息。 要...

    Java源代码带两个类型参数的泛型的应用.rar

    在Java编程语言中,泛型是一种强大的特性,它允许我们在类、接口和方法中使用类型参数,从而提高代码的重用性、安全性和效率。"Java源代码带两个类型参数的泛型的应用.rar"这个压缩包文件很可能包含了若干示例,展示...

    java技术之泛型的学习

    泛型的引入是Java SE 5.0的一个重要特性,极大地提升了Java开发的效率和质量。本文将深入探讨泛型的基本概念、使用方式以及其背后的原理。 一、泛型的基本概念 1. 类型参数:泛型中的类型参数就像函数参数一样,...

    java零基础自学 之 JAVA泛型

    在Java中,泛型通过对类型系统进行扩展实现,允许我们创建可以接受不同类型参数的类、接口和方法。类型参数,用尖括号 `&lt;T&gt;` 表示,就像方法的形式参数一样,是一个占位符,代表实际使用时会替换的具体类型。例如,`...

    JDK1.5的泛型实现

    总的来说,JDK 1.5的泛型实现极大地提升了Java代码的可读性、安全性和效率。它让开发者能够在编写代码时就明确指定数据类型,减少了类型转换的需要,并在编译阶段捕获许多潜在的类型错误。通过深入理解和熟练运用...

    泛型的使用

    总的来说,理解和熟练运用泛型是提升Java编程效率和代码质量的重要手段。遵循上述原则和理解类型擦除的机制,能帮助开发者编写出更加安全、高效且易于维护的代码。在实际项目中,应充分利用泛型的优势,同时注意其...

    Java1.5泛型指南中文版

    10. **原始类型(Raw Types)**:没有指定类型参数的泛型类或接口被称为原始类型,使用原始类型会失去泛型带来的类型安全保证。 总的来说,Java 1.5的泛型极大地提高了代码的类型安全性和可读性,减少了类型转换的...

Global site tag (gtag.js) - Google Analytics