UpDown Dev Story
Enum 클래스 사용 시 성능 향상 방법 본문
[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