같은 자바를 대상으로 하는 내용이라 참고했습니다. 기본적으로 안드로이드에 해당되는 내용입니다.
필요없는 객체 생성은 피하자
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 변수에 접근 가능한 메서드를 생성한다. 따라서, 변수에 직접 접근이 불가해 게터, 세터처럼 성능이 저하된다.
소수점 연산을 피하자
라이브러리를 알고 사용하자
'책을 읽겠습니다! > 자바 성능 튜닝 이야기' 카테고리의 다른 글
[자바 성능 튜닝 이야기] GC는 언제 발생할까 / GC가 어떻게 수행되고 있는지 보고 싶다? (0) | 2023.09.17 |
---|---|
[자바 성능 튜닝 이야기] JVM은 도대체 어떻게 구동될까? (2) | 2023.09.15 |
XML과 JSON도 잘 쓰자! & 서버를 어떻게 세팅해야 할까?! (1) | 2023.09.12 |
DB를 사용하면서 발생 가능한 문제점들 (0) | 2023.09.12 |
자바 성능 튜닝 이야기 (1) | 2023.09.04 |
댓글