Java 코드를 최적화할 때 JProfiler를 사용하여 코드의 시간 비율을 살펴본 다음 실행 시간을 줄이기 위해 어떤 부분을 최적화할 수 있는지 확인하세요. 아래에는 여러 가지 방향이 있습니다.
1. 생성자를 사용하여 한 번에 바로 얻을 수 있다면 setter 함수를 하나씩 사용하는 대신 생성자를 사용해 보세요.
2. 목록 대신 배열이 정말 빠릅니다.
3. for 루프를 사용할 때 for Each 루프 대신 목록 인터페이스 모음에 for i 루프를 사용하세요. for i 루프가 실행되면 for 루프 외부에서 길이 값이 언급됩니다.
4. 일부 변수는 추출하여 한 번 가져와 여러 번 사용할 수 있습니다. 자주 받지 마세요. 간단한 int 값도 가능합니다.
5. 내부 클래스를 사용할 수 있다면 getter 및 setter 메서드의 사용을 줄일 수 있는 내부 클래스를 사용할 수 있습니다.
6. json 직렬화 및 역직렬화의 경우 이론상 fastjson이 더 빠르다고 말하지 말고 그냥 fastjson을 사용하세요. 왜냐하면 데이터 구조의 단순성과 복잡성에 따라 실제 테스트 후에 역직렬화 및 역직렬화에 사용할 항목을 선택해야 하기 때문입니다. . 다시 얘기해 보세요. 때로는 Gson이 정말 빠르기 때문에 이론을 직접 복사할 수는 없습니다.
다음은 이 구성과 세트의 효율성을 비교한 것입니다
그런 다음 사용된 코드는 다음과 같습니다.
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(); }
사용된 Lombok의 Annotation입니다.
그리고 JProfiler 모니터링 결과가 있습니다
결과:
생성자가 여전히 더 좋고 빠르다는 것을 알 수 있습니다. 또한 위의 비율은 72.6: 27.4 = 33: 12.4 = 2.64
입니다. 건설과 세트 사이의 시간 비율은 변경되지 않았습니다.
위 내용은 Java에서 생성자를 사용하는 것과 setter를 사용하는 것의 효율성 차이의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!