测试clone和new方法的效率差别,首先来反面教材.
public class TestCloneAndNewMain {
public static void main(String[] args) throws CloneNotSupportedException {
TestClone original = new TestClone("1", "2", "3", "4", "5", "6", "7", "8", "9");
long l1 = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
newCopy(original);
}
long l2 = System.currentTimeMillis();
long l3 = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
original.clone();
}
long l4 = System.currentTimeMillis();
System.out.println("new " + (l2 - l1));
System.out.println("clone " + (l4 - l3));
}
public static TestClone newCopy(TestClone original) {
TestClone testClone = new TestClone();
testClone.setValue1(original.getValue1());
testClone.setValue2(original.getValue2());
testClone.setValue3(original.getValue3());
testClone.setValue4(original.getValue4());
testClone.setValue5(original.getValue5());
testClone.setValue6(original.getValue6());
testClone.setValue7(original.getValue7());
testClone.setValue8(original.getValue8());
testClone.setValue9(original.getValue9());
return testClone;
}
static class TestClone implements Cloneable {
private Integer i;
private String value1;
private String value2;
private String value3;
private String value4;
private String value5;
private String value6;
private String value7;
private String value8;
private String value9;
public TestClone() {
}
public TestClone(String value1, String value2, String value3, String value4, String value5, String value6, S