책을 읽겠습니다!/자바 성능 튜닝 이야기

[자바 성능 튜닝 이야기] 구글에서 이야기하는 안드로이드 성능 개선

Unagi_zoso 2023. 9. 15. 18:54

같은 자바를 대상으로 하는 내용이라 참고했습니다. 기본적으로 안드로이드에 해당되는 내용입니다.

  • 필요없는 객체 생성은 피하자
    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 변수에 접근 가능한 메서드를 생성한다. 따라서, 변수에 직접 접근이 불가해 게터, 세터처럼 성능이 저하된다.

  • 소수점 연산을 피하자

  • 라이브러리를 알고 사용하자