5월 16일 TIL

Yellta·2024년 5월 16일
0

TIL

목록 보기
3/73

1. Subject : 성능테스트

수행한 프로젝트의 로직1과 로직2의 수행 시간을 비교해보았다.

2. What I did?

로직1, 로직2를 수행시키는 Spring test코드를 작성했다. (통합 테스트)

로직1과 로직2의 수행 시간을 측정해보았다.

3. What was the result?

기존 리팩토링 전의 로직1의 수행시간은 120초

리팩토링 후 로직2의 수행시간은 16초

8배나 차이나는 결과이다.

4. What I know

그때는 기능이 일단 돌아가야한다는 것에 충실해서 이런 부분은 챙기지 못한 것 같다. 시간에 쫓기는 것도 있었다.(나름의 변호)

일단 돌아가게는 만들어야해!!

이런 마음이었다.

지금은 그래도 다르다. 뭔가 작업을 하기 전에 사전 분석을 해서 로직을 짜서 위와 같이 끔찍한 로직을 만드는 빈도수가 좀 적은 것 같다.

앞으로 코드를 짤때는 꼼꼼히 사전 분석을 하고 계획을 세워서 짜자

2. Subject : 조건의 순서

수행한 프로젝트의 로직1과 로직2의 수행 시간을 비교해보았다.

2. What I did?

백준 4179 불! 을 풀게 되면서 알게된 사실이다.

BFS를 수행하면서 조건을 줬었는데

  1. 그래프에서 이미 지나간 곳 or 벽인 경우(지나갈 수 없는 경우) continue;
  2. 범위 바깥인 경우

위의 순서로 줬었다.

3. What was the result?

결과는 실패

까닥하면 위의 결과는 runtime Error를 불러 일으킬 수도 있다.

4. What I know

마지막 블록에서 동서남북을 체크한다고 하면 무조건 범위 바깥을 검사하게 된다.

이때 범위 바깥은 저장된 값이 없는 곳이므로 참조할 수 없는 RunTime Error를 발생시키게 된다.

따라서 BFS를 수행할 때에는 범위 안쪽에 있는 녀석들인지 먼저 검사해줘야 한다.

해당 사항은 굳이 BFS에만 적용되는 것은 아니다. 조건의 순서에 따라서 결과값이 달라질 수 있음을 항상 명심하자

profile
Yellta가 BE개발해요! 왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜 가 제일 중요하죠

0개의 댓글