자바 기술과 코드 최적화를 코딩

본원에서 참조 마무리 https://mp.weixin.qq.com/s/-u6ytFRp-ZAqdLBsMmuDMw

점은이 문서 상세 내용보기에 갈 수이 문서의 질문이 있습니다

상수 및 변수

  • 직접 할당 상수 값은 같은 새로운 객체를 선언 금지Long i = new Long(1L);

  • 멤버 변수 값하면 변화하지 않고 가능한 한 시간은,로서 정의 될 정적 상수

  • 기본 데이터 유형을 사용하려면 자동 권투와 언 박싱을 피하기

  • 가변 할 경우에 적용 할 수 초기 값 주어진 불필요

  • 의 사용을 만들려면 의 기능 임시 변수의 기본 유형을

    • 함수 내에서 , 기본 유형 매개 변수 및 임시 변수가 저장되는 스택 , 액세스가 빠릅니다 . 개체 유형 스택에 저장되는 임시 변수 및 매개 변수 및 참조 및 내용을 스택에 저장 , 액세스 속도가 느린

    • 클래스에서 , 모든 종류의 멤버 변수는에 저장되어

  • 체외 순환에 변수를 정의하지 않으려 고, 피하기는 연장 대형 개체의 수명주기 의 결과로 회복 지연의 문제를

  • 정적 멤버 변수 불변 상수가 아닌 스레드 안전 클래스를 사용하려고

객체 및 클래스

  • JSON의 사용은 변형 객체 금지 , 수동 포장용 개체를 전환해야

    • JSON 스트링은 객체로 변환하여 얻을 수있는 해당 개체로 변환되어 있지만, 성능의 문제가있다

  • 으로 사용하지 않도록 노력 반사 할당 의 원인이됩니다, 객체 성능 저하 등의 VO에 할당 된 DTO의 값을,

  • 사용 익명 내부 클래스 람다 표현식을 가장 람다 표현식에서 가상 머신 사용하기 때문에, invokeDynamic 지침 및 효율성이 익명의 내부 클래스보다 높은 것

  • 보십시오 정의 불필요한 피 서브 클래스를 , 우리는 더 클래스 로더의 또 하나 개의 클래스가 필요

  • 지정 가능한 클래스 및 메소드 마지막 수식

    • 자바 컴파일러는 모두 50 %의 평균 성능을 향상시키기 위해 최적화 된 특정 Java 런타임을 볼 수있는 마지막 기회를 내부를 볼 것이다

방법

  • 정적 메소드 무관있어서 선언과 반원 변수

  • 의 만들기 사용 기본 데이터 유형 A와 매개 변수 유형 및 반환 값의 형태 , 피하기 위해 불필요한 포장 및 포장 풀기 널 포인터 분석을

  • 프로토콜 프로그래밍, 방법에 프로토콜 매개 변수 값은 null이 아닌 값을 반환

  • 초과 선고 빈 처리를 피하십시오

  • 불필요한 포장 기능 피 밀고 더 많은 CPU 및 메모리 소비에 리드를 보여주고 의한, 메소드 호출 볼륨을하지만, 간결하고 코드의 명확성을 위해 , 어떤 방법이 증가 할 가치가있다

  • 반복 호출을 감소

    •  (용 INT I = 0, userLength = . userList 여기서 , 크기 () I < ; userLength I {++) 
          ...
       }
  • 피하십시오 불필요한 메서드 호출 , 사실, 방지하기 위해 등장 하는 방법 및 양수인 결과를 호출을, 값이 놀이에 역할을 할당되지 않은, 그것은 덮여 있었다 일어나는에서

  • 사용하려고 변화를 대신 양의 정수의 곱셈과 나눗셈

  • 추출 일반적인 표현을

  • 시도 조건식 덜 된다 ! 부정적인 (negated) 사용

  • 때 위의 다섯 가지 , 스위치 문이 아니라 다른 경우보다 더 효율적

  • 일치하는 정규 표현식을 사용하지 않도록 노력

  • 고정 길이의 문자, 위치하기 때문에, 문자열 대체를 사용하려고하고 자연 고효율 일치

  • 사용의 StringBuilder 문자열 접합

  • 문자열 변환을 사용하여 수행 한 String.valueOf

배열

  • 사용 System.arraycopy에이 배열을 복사

  • 가능한 경우와 같은 수신 T 형의 어레이로 설정된 빈 어레이 T [0]

  • 세트로 변환된다 객체 배열 , 사용하려고 toArray () 메소드 toArray 대신 (신규 오브젝트 [0])

세트

  • 초기화 확장의 수를 줄여, 가능한 한 지정된 크기를 설정할

  • 사용하려고 오퍼레이션과 addAll ()를 일괄 복사

  • 사용 Arrays.adList ()는 배열 목록을 변환

  • 직접 반복 컬렉션의 사용을 필요로

  • 크기 () 빈 검출 방법을 사용하지 마십시오 에 의해, IsEmpty 함수의 검출 방법 구현하는 방법의 크기는 약간 때문에 시간 복잡도가 될 수있다 O (N)

  • 사용하려고 반복적 통과를 ) (취득으로 for 루프 대신

  • 사용하려고 HashSet의 본 판정 값

  • 피의 존재를 결정하는 제 재 취득 이 때문에, 보조 조회 원인 공기 여부를 확인 후, 직접 액세스

이상

  • 직접 캡처 다양한 예외 가 아니라 instanceof를보다

  • 주기에 피 포착은 , 사이클 효율을 향상 캡처 체외 될 수 있습니다

  • 비즈니스 프로세스의 비정상적인 제어의 사용 금지 등의 초과 수익률의 거짓을 던지는 등을,

버퍼

  • 시도 동일한 완충액 재사용

  • 사용 버퍼 흐름 IO 작업을 줄여

  • 단일 스레드 , 사용하려고 비 스레드 안전 클래스를

  • 다중 스레드 하는 사용해보십시오 스레드 안전 클래스를

  • 가능한 한 동기 부호 블록 범위를 감소시키기

  • 가능한 같은 동기 부호 블록에 결합

  • 사용하려고 스레드 풀을 스레드의 오버 헤드를 줄이기 위해

추천

출처www.cnblogs.com/aukocharlie/p/11962835.html