Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 泛型对执行时间的影响_Java_Performance_Collections_Arraylist_Hashmap - Fatal编程技术网

Java 泛型对执行时间的影响

Java 泛型对执行时间的影响,java,performance,collections,arraylist,hashmap,Java,Performance,Collections,Arraylist,Hashmap,我有一个类,它从数据库中获取数据并发送到UI以生成图表 类的执行时间为14秒 List listOfCLI =new ArrayList(); List listOfRRV =new ArrayList(); List listOfROP =new ArrayList(); List listOfACR =new ArrayList(); List listOfPIN =new ArrayList(); List listOfRIS =new ArrayList(); List list

我有一个类,它从数据库中获取数据并发送到UI以生成图表

类的执行时间为14秒

    List listOfCLI =new ArrayList();
List listOfRRV =new ArrayList();
List listOfROP =new ArrayList();
List listOfACR =new ArrayList();
List listOfPIN =new ArrayList();
List listOfRIS =new ArrayList();
List listOfTAA =new ArrayList();
List listOfTAR =new ArrayList();
List listOfPHA =new ArrayList();
List listOfSAR =new ArrayList();
List listOfGRQ =new ArrayList();
List listOfADC =new ArrayList();
当我将代码更改为

 List<DataMS> listOfCLI =new ArrayList<DataMS>();
List<DataMS> listOfRRV =new ArrayList<DataMS>();
List<DataMS> listOfROP =new ArrayList<DataMS>();
List<DataMS> listOfACR =new ArrayList<DataMS>();
List<DataMS> listOfPIN =new ArrayList<DataMS>();
List<DataMS> listOfRIS =new ArrayList<DataMS>();
List<DataMS> listOfTAA =new ArrayList<DataMS>();
List<DataMS> listOfTAR =new ArrayList<DataMS>();
List<DataMS> listOfPHA =new ArrayList<DataMS>();
List<DataMS> listOfSAR =new ArrayList<DataMS>();
List<DataMS> listOfGRQ =new ArrayList<DataMS>();
List<DataMS> listOfADC =new ArrayList<DataMS>();
List listOfCLI=new ArrayList();
List listOfRRV=new ArrayList();
List listOfROP=new ArrayList();
List listOfACR=new ArrayList();
List listOfPIN=新建ArrayList();
List listOfRIS=new ArrayList();
List listOfTAA=new ArrayList();
List listOfTAR=new ArrayList();
List LISTOPHA=新的ArrayList();
List listOfSAR=new ArrayList();
List listOfGRQ=new ArrayList();
List listOfADC=new ArrayList();
执行时间最多为17秒。。 为什么eclipse建议添加泛型会产生如此不利的影响

您还可以建议使用泛型来减少执行时间的最佳方法吗

**Map<String, List> reqCLI =new HashMap<String, List>();
        Map<String, List> reqRRV =new HashMap<String, List>();
        Map<String, List> reqROP =new HashMap<String, List>();
        Map<String, List> reqACR =new HashMap<String, List>();
        Map<String, List> reqPIN =new HashMap<String, List>();
        Map<String, List> reqTAA =new HashMap<String, List>();
        Map<String, List> reqTAR =new HashMap<String, List>();
        Map<String, List> reqRIS =new HashMap<String, List>();
        Map<String, List> reqPHA =new HashMap<String, List>();
        Map<String, List> reqSAR =new HashMap<String, List>();
        Map<String, List> reqGRQ =new HashMap<String, List>();
        Map<String, List> reqADC =new HashMap<String, List>();

        List<Map<String, List>> listCLI=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listRRV=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listROP=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listACR=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listPIN=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listTAA=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listTAR=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listRIS=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listPHA=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listSAR=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listGRQ=new ArrayList<Map<String, List>>();
        List<Map<String, List>> listADC=new ArrayList<Map<String, List>>();**
**Map reqCLI=new HashMap();
Map reqRRV=新HashMap();
Map reqROP=new HashMap();
Map reqACR=newhashmap();
Map reqPIN=new HashMap();
Map reqTAA=新的HashMap();
Map reqTAR=new HashMap();
Map reqRIS=新的HashMap();
Map reqPHA=新HashMap();
Map reqSAR=new HashMap();
Map reqGRQ=新的HashMap();
Map reqADC=newhashmap();
List listCLI=new ArrayList();
List listRRV=new ArrayList();
List listROP=new ArrayList();
List listACR=new ArrayList();
List listPIN=new ArrayList();
List listTAA=new ArrayList();
List listTAR=new ArrayList();
List listRIS=new ArrayList();
List listPHA=new ArrayList();
List listSAR=new ArrayList();
List listGRQ=new ArrayList();
List listADC=new ArrayList()**

这些是剩余集合使用的

,因为类型擦除(请参阅),编译的字节码中不表示泛型类型,因此在执行时性能应该没有差异。参数化类型仅在编译时进行检查。

由于类型擦除(请参阅),编译的字节码中不表示泛型类型,因此执行时的性能应该没有差异。参数化类型仅在编译时进行检查。

唯一的区别是java编译器可以插入隐式强制转换:

List a = new ArrayList();
b.add("foo");
List b = new ArrayList();
for (Object o : a) {
  b.add(o);  // Adding an object.
}
没有强制类型转换,但中存在隐式强制类型转换

List<String> a = new ArrayList<String>();
b.add("foo");
List<String> b = new ArrayList<String>();
// Each element is implicitly cast to a String which requires
// a runtime type check.
for (String s : a) {
  b.add(s);
}
List a=new ArrayList();
b、 添加(“foo”);
列表b=新的ArrayList();
//每个元素都隐式转换为一个字符串,该字符串需要
//运行时类型检查。
for(字符串s:a){
b、 添加(s);
}
这是字节码级别的唯一区别

在不知道正在进行的写入和读取的数量的情况下,很难判断这是否能解释您看到的差异,但是RTTI检查非常便宜



首选批处理操作,如
List.addAll
Map.putAll
,而不是循环,如果这是罪魁祸首的话,应该可以消除这种开销。

唯一的区别是java编译器可以插入隐式强制转换

List a = new ArrayList();
b.add("foo");
List b = new ArrayList();
for (Object o : a) {
  b.add(o);  // Adding an object.
}
没有强制类型转换,但中存在隐式强制类型转换

List<String> a = new ArrayList<String>();
b.add("foo");
List<String> b = new ArrayList<String>();
// Each element is implicitly cast to a String which requires
// a runtime type check.
for (String s : a) {
  b.add(s);
}
List a=new ArrayList();
b、 添加(“foo”);
列表b=新的ArrayList();
//每个元素都隐式转换为一个字符串,该字符串需要
//运行时类型检查。
for(字符串s:a){
b、 添加(s);
}
这是字节码级别的唯一区别

在不知道正在进行的写入和读取的数量的情况下,很难判断这是否能解释您看到的差异,但是RTTI检查非常便宜



首选批处理操作,如
List.addAll
Map.putAll
,而不是循环,如果这是罪魁祸首,应该可以消除这种开销。

List或List将是相同的事情(List->List)泛型在执行时间上没有影响。您是否有基准测试结果来证明您的观点?正如我所说,添加List listOfCLI=new ArrayList()后,执行时间增加到27秒;代替列表listOfCLI=new ArrayList();我现在正在运行它。。。正如我们所说的,您使用什么JVM来执行代码?这不是一个好的基准测试,因为它包含太多的SOUT,这些SOUT会伪造您真正想要测量的内容。List或List将是同一件事(List->List)泛型在执行时间内没有任何影响。您是否有基准测试结果来证明您的观点?正如我所说,添加List listOfCLI=new ArrayList()后,执行时间增加到27秒;代替列表listOfCLI=new ArrayList();我现在正在运行它。。。正如我们所说的,您使用什么JVM来执行代码?这不是一个好的基准测试,因为它包含了太多的SOUT,这些SOUT伪造了您真正想要度量的内容。一个数据库会产生多大的开销?从JAVA到Oracle。一个数据库hit能创造多少开销?从JAVA到Oracle。