>  기사  >  Java  >  Java에서 생성자를 사용하는 것과 setter를 사용하는 것의 효율성 차이

Java에서 생성자를 사용하는 것과 setter를 사용하는 것의 효율성 차이

(*-*)浩
(*-*)浩앞으로
2019-08-05 17:13:283384검색

Java 코드를 최적화할 때 JProfiler를 사용하여 코드의 시간 비율을 살펴본 다음 실행 시간을 줄이기 위해 어떤 부분을 최적화할 수 있는지 확인하세요. 아래에는 여러 가지 방향이 있습니다.

Java에서 생성자를 사용하는 것과 setter를 사용하는 것의 효율성 차이

1. 생성자를 사용하여 한 번에 바로 얻을 수 있다면 setter 함수를 하나씩 사용하는 대신 생성자를 사용해 보세요.

2. 목록 대신 배열이 정말 빠릅니다.

3. for 루프를 사용할 때 for Each 루프 대신 목록 인터페이스 모음에 for i 루프를 사용하세요. for i 루프가 실행되면 for 루프 외부에서 길이 값이 언급됩니다.

4. 일부 변수는 추출하여 한 번 가져와 여러 번 사용할 수 있습니다. 자주 받지 마세요. 간단한 int 값도 가능합니다.

5. 내부 클래스를 사용할 수 있다면 getter 및 setter 메서드의 사용을 줄일 수 있는 내부 클래스를 사용할 수 있습니다.

6. json 직렬화 및 역직렬화의 경우 이론상 fastjson이 더 빠르다고 말하지 말고 그냥 fastjson을 사용하세요. 왜냐하면 데이터 구조의 단순성과 복잡성에 따라 실제 테스트 후에 역직렬화 및 역직렬화에 사용할 항목을 선택해야 하기 때문입니다. . 다시 얘기해 보세요. 때로는 Gson이 정말 빠르기 때문에 이론을 직접 복사할 수는 없습니다.

다음은 이 구성과 세트의 효율성을 비교한 것입니다

Java에서 생성자를 사용하는 것과 setter를 사용하는 것의 효율성 차이그런 다음 사용된 코드는 다음과 같습니다.

package com.lxk.fast;
 
import com.google.common.collect.Lists;
import com.lxk.model.Car;
import com.lxk.model.Dog;
 
/**
 * 测试谁快 直接构造或者一个个set,他们的效率差多少
 *
 * @author LiXuekai on 2019/6/18
 */
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));
    }
}

각각 설정하는 것보다 구성이 훨씬 빠르다는 것을 알 수 있습니다. , 그래서 한 단계에서 속성에 대한 값을 설정할 때 효율성 문제를 고려하여 이렇게 해야 합니다

(2019-07-16에 추가됨)

어떤 늙은이가 빌더에 대해 이야기하지 않았습니까? 방법?

이 빌더 모드가 더 빠를까봐 궁금해서 테스트해봤습니다.

다음은 빌더 코드

   /**
     * 使用JProfiler看时间占比
     */
    @Test
    public void testFast2() {
        while (true) {
            //33%
            set();
            //12.4%
            construct();
            //54.6%
            builder();
        }
    }
 
    /**
     * 使用lombok的 builder 模式来赋值
     */
    private static void builder() {
        Car car = Car.builder()
                .sign("0000")
                .price(100)
                .myDog(Lists.newArrayList(Dog.builder().name("aaa").alive(true).isLoyal(true).build()))
                .build();
    }

Java에서 생성자를 사용하는 것과 setter를 사용하는 것의 효율성 차이Java에서 생성자를 사용하는 것과 setter를 사용하는 것의 효율성 차이사용된 Lombok의 Annotation입니다.

그리고 JProfiler 모니터링 결과가 있습니다

Java에서 생성자를 사용하는 것과 setter를 사용하는 것의 효율성 차이

결과:

생성자가 여전히 더 좋고 빠르다는 것을 알 수 있습니다. 또한 위의 비율은 72.6: 27.4 = 33: 12.4 = 2.64

입니다. 건설과 세트 사이의 시간 비율은 변경되지 않았습니다.

위 내용은 Java에서 생성자를 사용하는 것과 setter를 사용하는 것의 효율성 차이의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
이전 기사:자바 백엔드 소개다음 기사:자바 백엔드 소개