[자바 성능 튜닝 이야기] 구글에서 이야기하는 안드로이드 성능 개선
같은 자바를 대상으로 하는 내용이라 참고했습니다. 기본적으로 안드로이드에 해당되는 내용입니다.
필요없는 객체 생성은 피하자
1) String 대신 StringBuffer
2) Integer 배열 대신 int 배열
3) 다차원 배열 대신 1차원 배열객체 덜 생성되고, GC도 적게 발생
static을 적절히 사용하자
인스턴스 변수에 접근할 일이 없을 경우 static 메서드를 선언하여 호출하는 것은 많게 20퍼센트의 성능 개선이 발생할 수 있다.상수에는 static final 을 사용하자
변하지 않는 상수를 선언할 때 이를 선언할 경우 static으로 선언할 때 저장되고 참조되는 위치가 달라진다. static final의 속도가 훨 빠르다. 상수화되면 constant folding 발생해 컴파일 타임에 계산이 이루어져 이후에 계산을 할 필요가 없다. 저장되는 것도 constant pool에 될듯하다
내부에서 getter, setter의 사용은 피하자. 직접 접근하는 것이 더 빠르다.
개선된 for 루프를 사용하자. 전통적인 for 루프보다 for-each 를사용하는게 성능상 유리하다. ArrayList는 전통적인 for 루프가 더 빠르다... 왜지?
private한 Inner 클래스의 private 접근을 피하자. Inner 클래스는 감싸고 있는 클래스의 private 변수를 접근할 수 있는데 VM에서는 내부와 바깥을 다른 클래스로 인식한다. 그래서 컴파일러는 감싸고 있는 클래스의 private 변수에 접근 가능한 메서드를 생성한다. 따라서, 변수에 직접 접근이 불가해 게터, 세터처럼 성능이 저하된다.
소수점 연산을 피하자
라이브러리를 알고 사용하자