자바 성능을 향상시키는 몇 가지 효율적인 사용법을 공유하다

1777 단어
1. 중요한 순환에서 순환을 없애고 판단을 중지할 때 사용하는 방법
 
  
for(int i=0; i {
...
}
for(int i=0; i {
...
}

다음으로 바꾸기...
 
  
view plaincopy to clipboardprint?
for(int i=0;n=collection.size();i {
...
}

2. 보통 순환 index와 상관없이 순환의 바깥쪽으로 옮긴다
 
  
for(int i=0;terminal=x.length;i  X[i]=x[i]/scaleA*scaleB;
}
for(int i=0;terminal=x.length;i X[i]=x[i]/scaleA*scaleB;
}

... 로 바꾸다
 
  
double scale = scaleB/scaleA;
for(int i=0; terminal=x.length; i  X[i]=x[i]*scale;
}

2. 문자열
문자열 연결을 제거하고 긴 문자열을 만들 때 항상 StringBuffter 대신 StringBuffer 공간을 미리 할당합니다
StringBuffer sb = new StringBuffer(5000);
3. 기본 데이터 유형
중요한 순환에서 기본 데이터 형식(int형 데이터는 대개 long/double형 데이터보다 빠르다)을 사용하는 기본 데이터 형식(Boolean, Integer, etc)의 포장 클래스는 전달하는 방법의 매개 변수가 하나의 대상의 인용이어야 할 때(기본 수거 형식이 아니라) 모든 상수 대수 표현식에 static final 수식자를 사용한다.
상수를 쉽게 인용하기 (컴파일러가 상수 표현식을 미리 계산함)
4.이상
이상은 하나의 진정한 오류 조건에만 사용됩니다
하나의 이상을 던지고 하나의catch 코드 블록을 실행하는 데 비용이 많이 든다. (주로 이상을 만들 때 스레드 창고의 스냅샷을 얻기 때문이다) 조건이 정말 이상할 때만 이상을 던진다.
컴파일러와 실행 시 최적화를 위해 몇 가지 방법을 하나의try/catch 블록에 호출하는 것이지, 각각의 방법을 호출하기 위해 몇 개의try/catch 블록을 실행하는 것이 아니다
5. 기준
이 모든 기술은 플랫폼과 가상 시스템에 따라 다를 수 있으므로 주의하십시오
예를 들어 어떤 servlet 용기에서는 OutputStream을 바이트로 출력하는 것이 더 빠르고 다른 용기에서는PrintWriter를 통해 문자를 출력하는 것이 더 빠르다
이 기교들이 묘사한 것은 가장 이식할 수 있는 건의이다
너는 너의 플랫폼에서 어떻게 가장 빠른지 판단하기 위해 몇 가지 기준을 실행해야 할 수도 있다

좋은 웹페이지 즐겨찾기