Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

UpDown Dev Story

Enum 클래스 사용 시 성능 향상 방법 본문

Etc

Enum 클래스 사용 시 성능 향상 방법

updown 2024. 1. 10. 10:41

[enum 클래스 사용 시 성능 향상 방법]

개발하다 보면 enum 클래스를 사용할 일이 많은데요 현재 일반적으로 values() 사용해서 원하는 값을 매칭하게 구현되어 있습니다.

(루프 돌면서 내가 원하는 값이랑 같아? 라고 다 확인하는 구조)

 

이렇게 사용하는 것보다 Map 자료 구조를 사용(캐싱 처리) 하면 약 20배의 속도 차이를 보여줍니다.

아래는 예시입니다.

  • 기존 enum 클래스
public enum AccountStatus {
    INUSE("사용중"),
    UNUSED("미사용"),
    DELETED("삭제"),
    UNKNOWN("알수없음");

    private final String description;

    AccountStatus(String description) {
        this.description = description;
    }

    public static AccountStatus find(String description) {
        return Arrays.stream(values())
            .filter(accountStatus -> accountStatus.description.equals(description))
            .findAny()
            .orElse(UNKNOWN);
    }
}
  • Map 으로 캐싱하여 구현한 enum 클래스
public enum AccountStatus {
    INUSE("사용중"),
    UNUSED("미사용"),
    DELETED("삭제"),
    UNKNOWN("알수없음");

    private final String description;

    AccountStatus(String description) {
        this.description = description;
    }

    private static final Map<String, AccountStatus2> descriptions =
        Collections.unmodifiableMap(Stream.of(values())
            .collect(Collectors.toMap(AccountStatus::getDescription, Function.identity())));

    public static AccountStatus find(String description) {
        return Optional.ofNullable(descriptions.get(description)).orElse(UNKNOWN);
    }
}

'Etc' 카테고리의 다른 글

IntelliJ 자동 import 정리 설정  (0) 2024.01.05
Node.js 시작하기  (0) 2020.01.31
Javascript Date Format 함수  (0) 2018.03.27
Comments