从一个Size为10000的List里面把数据复制到一个Length为10000的Object数组并强制转换竟然毫无费时!!!
代码片断如下:
public AbstractOcsInfoClassinfo[] findClassInfo() {
List list = new ArrayList();
AbstractOcsInfoClassinfo[] classInfoList = null;
String sql = "from OcsInfoClassinfo classinfo where rownum<=10000";// where classid like '1%' or classid like '2%' or classid like '3%' or classid like '%4' or classid like '%5' or classid like '%6' or classid like '%7' or classid like '%8'";
//返回全部信息列表
long beginTime = System.currentTimeMillis();
list = getHibernateTemplate().find(sql);
long endTime = System.currentTimeMillis();
System.out.println("===================>>>Fetching from DB Time:" + (endTime - beginTime));
beginTime = System.currentTimeMillis();
classInfoList = new AbstractOcsInfoClassinfo[list.size()];
Object tempObj[] = list.toArray();
for (int i = 0; i < tempObj.length; i++) {
classInfoList[i] = (AbstractOcsInfoClassinfo) tempObj[i];
}
endTime = System.currentTimeMillis();
System.out.println("===================>>>Filling AbstractInfoClassinfo Array Time:" + (endTime - beginTime));
return classInfoList;
}
结果显示:
===================>>>Fetching from DB Time:12203
===================>>>Filling AbstractInfoClassinfo Array Time:0
我真的不很明白,不是说Java创建对象的开销很大吗?这里创建一个Object[10000],然后把List数据填进去,然后在强制把Object转换为另一种类。这里计算的耗时竟然是0毫秒?
不可能吧?真的很奇怪,我的测试代码是否有问题?