다음은 정규표현식을 활용한 예제이다.
static boolean isRomanNumera(String s) {
return s.matches("^(?-.)M* ....;
}
성능을 개선하려면 필요한 인스턴스를 클래스 초기화과정에서 생성해 캐싱하여, 나중에 해당 인스턴스를 재사용한다.이 방식은 쉬운 방식이지만 성능이 중요한 곳에서는 반복적으로 사용하기 적합치 않다.
이 메서드가 내부에서 만드는 인스턴스는 한 번 쓰이고 버려져 곧바로 가비지 컬렉션 대상이 된다.
public class RomanNumerals {
private static final Pattern ROMAN = Patterm.compile(
"^(?-.)M* ....
);
static boolean isRomanNumeral(String s) {
return ROMAN.matcher(s).matchers();
}
}
1.1μs 걸리던 로직이 개선 후 0.17μs가 되어, 약 6.5배 빨라진다. 또한 코드도 명확해졌다.
'독후감 > Effective Java' 카테고리의 다른 글
8. finalizer와 cleaner 사용을 피하라 (0) | 2021.04.02 |
---|---|
7. 다 쓴 객체 참조를 해제하라 (0) | 2021.04.01 |
5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2021.03.30 |
4. 인스턴스화를 막으려거든 private 생성자를 사용하라 (0) | 2021.03.18 |
3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2021.03.18 |