private void fillArray(Object[] objs) {
for (int i = 0; i < objs.length; i = i + 10) {
fillArray(objs, i);
}
}
void fillArray(Object[] objs, int start) {
objs[start++] = new Object();
objs[start++] = new Date();
objs[start++] = getRandomString();
objs[start++] = getRandomString();
objs[start++] = getRandomString();
objs[start++] = getRandomString();
objs[start++] = getRandomString();
objs[start++] = r.nextLong();
objs[start++] = getRandomString();
objs[start++] = getRandomString();
}
private Random r = new Random();
/**
*获取随机字符串。
* @return 随机字符串
*/
String getRandomString() {
StringBuffer sb = new StringBuffer();
int loop = 3 + r.nextInt(4);
while (loop > 0) {
loop--;
sb.append((char)(97 + r.nextInt(25)));
sb.append((char)(65 + r.nextInt(25)));
}
return sb.toString();
}
void arrayCopy() {
testMethod("short array\t############", srcArray1);
testMethod("long array\t########################", srcArray2);
testMethod("big array\t####################################",
srcArray3);
testMethod("huge array\t################################################",
srcArray4);
testMethod("mass array\t############################################################",
srcArray5);
}
/**
*成组测试。
* @param prmpt 测试提示
* @param args 测试对象数组
*/
void testMethod(String prmpt, Object[] args) {
int loop = 5000000;
System.out.println(prmpt);
arrayClone(loop, args);
arrayManualCopy(loop, args);
arraySysCopy(loop, args);
}
void arrayClone(int loop, Object[] sourceArray) {
long time = System.currentTimeMillis();
for (int i = 0; i < loop; ++i) {
Object[] destArray = (Object[])sourceArray.clone();
}
System.out.println(" arrayClone\t" +
(System.currentTimeMillis() - time));
}
void arraySysCopy(int loop, Object[] sourceArray) {
long time = System.currentTimeMillis();
for (int i = 0; i < loop; ++i) {
Object[] destArray = new Object[sourceArray.length];
System.arraycopy(sourceArray, 0, destArray, 0, sourceArray.length);
}
System.out.println(" arraySysCopy\t" +
(System.currentTimeMillis() - time));
}
void arrayManualCopy(int loop, Object[] sourceArray) {
long time = System.currentTimeMillis();
for (int i = 0; i < loop; ++i) {
Object[] destArray = new Object[sourceArray.length];
for (int j = 0; j < sourceArray.length; ++j) {
destArray[j] = sourceArray[j];
}
}
System.out.println(" arrayManulCopy\t" +
(System.currentTimeMillis() - time));
}
}
责任编辑:小草