1. 중요한 루프에서는 루프 종료를 판단할 때 메서드 호출을 제거합니다.
다음과 같이 코드 코드를 복사합니다.
for(int i=0; i<collection.size(); i++)
{
...
}
for(int i=0; i<collection.size(); i++)
{
...
}
다음으로 교체…
다음과 같이 코드 코드를 복사합니다.
일반 사본을 클립보드 인쇄로 보시겠습니까?
for(int i=0;n=collection.size();i<n;i++)
{
...
}
2. 일반적으로 루프 인덱스와 관련되지 않은 항목을 루프 외부로 이동합니다.
다음과 같이 코드 코드를 복사합니다.
for(int i=0;terminal=x.length;i<terminal;i++){
X[i]=x[i]/scaleA*scaleB;
}
for(int i=0;terminal=x.length;i<terminal;i++){
X[i]=x[i]/scaleA*scaleB;
}
다음으로 변경
다음과 같이 코드 코드를 복사합니다.
이중 스케일 = scaleB/scaleA;
for(int i=0; 터미널=x.length; i<터미널; i++){
X[i]=x[i]*규모;
}
2. 문자열
문자열 연결 제거 긴 문자열을 생성할 때 항상 문자열 대신 StringBuffter를 사용하십시오.
StringBuffer 공간을 사전 할당합니다.
StringBuffer sb = new StringBuffer(5000);
3. 기본 데이터 유형
중요한 루프에서는 기본 데이터 유형을 사용합니다(int 데이터 유형은 일반적으로 long/double 데이터 유형보다 빠릅니다).
기본 데이터 유형(Boolean, Integer 등)의 래퍼 클래스는 전달된 메서드 매개변수가 객체에 대한 참조(기본 데이터 유형이 아님)여야 할 때 주로 사용됩니다.
모든 상수 대수식에 static final 수정자를 사용하세요.
상수를 더 쉽게 참조할 수 있도록 합니다(컴파일러는 상수 표현식을 미리 계산합니다).
4. 이상
예외는 단일 실제 오류 조건에만 사용됩니다.
예외를 발생시키고 catch 블록을 실행하는 것은 비용이 많이 듭니다(주로 예외를 생성할 때 스레드 스택의 스냅샷을 얻기 때문에).
조건이 실제로 비정상적인 경우에만 예외가 발생합니다.
각 메서드 호출에 대해 여러 try/catch 블록을 구현하는 대신 try/catch 블록에 여러 메서드 호출을 배치하여 컴파일러 및 런타임 최적화를 수행합니다.
5.벤치마크
이러한 모든 팁은 플랫폼과 가상 머신에 따라 다릅니다.
예: 일부 서블릿 컨테이너에서는 OutputStream을 통해 바이트를 출력하는 것이 더 빠릅니다. 다른 컨테이너에서는 PrintWriter를 통해 문자를 출력하는 것이 더 빠릅니다.
이 팁은 가장 이식성이 뛰어난 권장 사항을 설명합니다.
플랫폼에서 가장 빠른 것이 무엇인지 결정하기 위해 일부 벤치마크를 실행해야 할 수도 있습니다.