/**
* 测试谁快 直接构造或者一个个set,他们的效率差多少
*
* @author xyd on 2019/6/23
*/
public class FastIsConstructOrSet {
public static void main(String[] args) {
testFast();
}
/**
* 使用JProfiler看时间占比
*/
private static void testFast() {
while (true) {
//27.4%
set();
//72.6%
construct();
}
}
/**
* 构造函数来给属性赋值
*/
private static void construct() {
Car car = new Car("oooo", 100, Lists.newArrayList(new Dog("aaa", true, true)));
}
/**
* set来给属性赋值
*/
private static void set() {
Car car = new Car();
car.setSign("oooo");
car.setPrice(100);
Dog dog = new Dog();
dog.setName("aaa");
dog.setAlive(true);
dog.setLoyal(true);
car.setMyDog(Lists.newArrayList(dog));
}
}
可以发现,构造就是比一个个设置要快不少,所以,在能一步到位给属性设置值的时候,考虑到效率问题,就要这么干
一个个设置调用太多次函数了,太多的压参pop的处理。就跟for循环,计数器是数组的长度时,要在for循环入口定义一个len=a.size(),而不要放到for括号的中间部分一次次循环中去重新获取len,那会导致太多的函数调用,影响性能。