정수는 자동 unboxing 및 자동 권투를 제공 성능 문제를 해결합니까?
문제
우리가 지금 하고 있는 일부 반복 사용하여 다른 작업 x++;
가 x
가 Integer
과하지 않는 int
.
작업에 걸쳐 반복한 일부 사용자 작업에서 우리의 시스템지만 아무것이 너무 복잡하거나 많은 같은 수학의 응용 프로그램,최대까지 10000 시간당 사용자 트랜잭션이..
이 개봉하고 나중에 권투에 영향을 주는 우리의 성능해 눈에 띄는 밀리초 단위?
해결책
http://download.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html
"성과의 결과 목록이 될 가능성이 가난으로,상자 또는 unboxes 에 모든 설정 또는 작업입니다.그것은 많은 충분히 빠르다는 가끔 사용할 수 있지만,그것은 것 폴리에서 사용하는 성능이 중요 inner loop.
그래서 때 사용해야 합 autoboxing 및 unboxing?그들을 사용하는 경우에만 있다"임피던스 불일치 사이에는"참조 종류와 프리미티브는 경우,예를 들어,당신을 넣어야 숫자값으로 컬렉션입니다.그것은 사용하는 것은 적절하지 않 autoboxing 및 unboxing 에 대한 과학적인 컴퓨팅,또는 다른 중요한 성능 수치 코드입니다.는 정수를 대체하지 않습니다 int;autoboxing 및 unboxing 구분 사본 형식 및 참고 유형,그러나 그들은 제거하지는 않습니다."
다른 팁
예 성능에 영향을 미친다.동일한 코드에 대한 생산 ++x
을 만드는 것을 포함한 새로운 정수 개체로 각 시간입니다. x++
또한 생성 일시적 변수를 저장하고 이전의 정수 참조,일부입니다.이를 확인할 수 있습니다 분해 클래스 파일에 있습니다.
의 속도가 자동 권투에 따라 달라집 JVM 버전을 사용하는 범위의 실제 번호는 당신이 작업,그리고 당신의 GC 설정합니다.보 이 정말 흥미로운 깊이 있는 문서(un)복싱 성능입니다.
기본적으로,JVM 캐시 수의 정수 개체 그래서 그것을 만들 필요가 없는"일반"사람마다.구성할 수 있는 이 캐시 크기입니다.
로 특정 질문:귀하의 작업 밀리초 단위 느린 경우 사용할 기본 형식 대 autoboxing?이전 크기에 따라 달라집의 목록과 어떻게 자라고합니다.그것은 쉽게 해야(나는 생각한다!) 을 테스트하는 원시적인 대안의 성능을 제공합니다.