210226_B책_순회하며 계산 집약적 연산하지 않기_1 + 생각

정재현·2021년 2월 26일
0

TIL

목록 보기
78/80

ㅋㅋㅋ 오늘은 제목이 길다.
순회하며 계산 집약적 연산하지 않기.
코드를 보니 내가 모르는 것들이 많아 2회로 나눴고, 그렇게 어려운 내용은 아니지만 이해가 필요하다.

자료 구조를 순회할 때는 수행할 연산 유형에 주의해야하는데,
계산 집약적 연산을 수행하면 성능 위험이 쉽게 초래될 수 있기 때문이다.

class Inventory {
 private List<Supply> supplies = new ArrayList<>();
 
 List<Supply> find(String regex) {
  List<Supply> result = new LinkedList<>();
   for (Supply supply : supplies) {
    if (Pattern.matches(regex, supply.toString())) {
     result.add(supply)
    }
   }
   return result;
 }

자바를 비롯해 다양한 프로그래밍 언어에서는 정규식, 짧게 줄여 regex로 쿼리 문자열을 만드는데
정규식이 있으면 거대한 텍스트 데이터 집합에 효율적으로 정의할 수 있다.
=> (난 정규식에 익숙하지 않다. 그래서 이번 챕터가 2회로 나눠지기도 했다.)
정규식에 익숙해지려면 자바 API의 java.util.regex.Pattern을 살펴보면 된다고 한다.
이 클래스는 자바의 정규식 표현이자 정규식을 만들고 실행하는 다양한 메서드를 제공한다.

위 코드 조각처럼 <정적메소드>인 matches()를 호출하면서 정규식인 String과 검색할 String을
제공하는 방식이 가장 쉬울 것이라고 한다.
하지만 이 방법은 유용하지만! 성능을 저하시킨다.
=> (이 문장에 대하여 나는 많은 생각을 했었고, 이번에도 했다. 우선 나는 개발자가 아니며, 내가 하고 있는 주업무는 app으로 배포해서 서비스하지도 않는다. 그 서비스를 자동화로 qa하는 업무이며, 그 업무에 있어서 for문을 10번 돌리던 100번 돌리던 1000번 돌리던 나와 팀원분들이 가지고 업무하는 장비인 imac으로는 시간차이가 없다. 그럼에도 성능을 저하시키는 코드를 쓰지않아야 하는가 에 대해서 여태껏 자주 생각해봤다. 당연히 코드를 다루는 직업, 직군이라면 항상 이 부분에 대해서 생각해봐야 하고 생각해본 결론은 코드를 다룬다면 무슨 코드이던간에 성능을 저하시키면 안된다는 것이다.
시간 차이는 없지만서도 더 좋은 성능, 방향으로 항상 코드를 가져가야 앞으로의 업무와 팀워크의 발전성에 있어서 기여한다고 생각하고, 그것이 회사가 직원에게 원하는 인재상이 아닐까 싶었다.)

내일도 이어서 이 챕터를 진행할 것이고,
새로운 개념인, 오토마톤, Pattern, 정규식을 습득해볼 것이다.

오늘의 코멘트: 갑자기.. 저런 문장이 나와서 평소에 생각했던 것을 꺼냈다.

profile
"돈받고 일하면 프로다"

0개의 댓글