Java 성능을 향상시키는 몇 가지 효율적인 사용 방법 공유

1858 단어 Java 성능
1. 중요한 순환에서 순환 중지 판단을 제거할 때 방법 호출

for(int i=0; i<collection.size(); i++)
{
...
}
for(int i=0; i<collection.size(); i++)
{
...
}
대체...

view plaincopy to clipboardprint?
for(int i=0;n=collection.size();i<n;i++)
{
...
}
2. 보통 순환 index와 상관없는 것을 순환의 바깥쪽으로 옮긴다

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;
}
... 로 바꾸다

double scale = scaleB/scaleA;
for(int i=0; terminal=x.length; i<terminal; i++){
 X[i]=x[i]*scale;
}
2. 문자열
문자열 연결 해제
긴 문자열을 만들 때 String 대신 StringBuffter를 사용합니다.
StringBuffer 공간 사전 할당
StringBuffer sb = new StringBuffer(5000);
3. 기본 데이터 유형
중요한 순환에서 기본 데이터 형식을 사용합니다 (int형 데이터는 통상적으로long/double형 데이터보다 빠릅니다)
기본 데이터 유형(Boolean, Integer, etc)의 패키지 클래스는 주로 전달 방법의 매개 변수가 하나의 대상의 인용이어야 할 때(기본 데이터 형식이 아니라)
모든 상량 대수 표현식에 staticfinal 수식자 사용하기
상수를 쉽게 인용하기 위해 (컴파일러가 상수 표현식을 미리 계산함)
4. 이상
예외는 하나의 진정한 오류 조건에만 사용됩니다
이상을 던지면catch 코드 블록을 실행하는 데 비용이 많이 듭니다. (주로 이상을 만들 때 라인 창고의 스냅샷을 얻기 때문입니다.)
하나는 조건이 정말 이상할 때만 이상을 던진다
컴파일러와 실행을 최적화시키고, 몇 가지 방법을 하나의try/catch 블록에 호출하는 것이지, 모든 방법을 호출하기 위해 몇 개의try/catch 블록을 실현하는 것이 아니다
5. 기준
이러한 모든 기술은 플랫폼과 가상 시스템에 따라 달라질 수 있습니다.
예를 들어 일부 servlet 용기에서 OutputStream을 바이트로 사용하면 출력이 빨라진다
다른 컨테이너에서 PrintWriter 하나로 문자를 내보내는 것이 더 빠릅니다.
이 기교들은 가장 이식할 수 있는 건의를 묘사하고 있다
플랫폼에서 어떻게 하는 것이 가장 빠른지 판단하기 위해 기준을 실행해야 할 수도 있다

좋은 웹페이지 즐겨찾기