일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인텔리제이
- 프로그래머스
- string
- RESTful
- 백엔드 개발자 뭐해?
- 백엔드
- 서비스 계층
- @RestCotroller
- Scanner
- 깃허브
- 클론코딩
- Java
- Spring
- 다리를 지나는 트럭
- 스프링 OAuth
- 개발 뭐하지
- 예외처리
- 인스타그램만들기
- 개발자
- 리눅스 서버시간 변경
- 스프링부트
- springboot
- 스프링
- BufferedReader
- .ppk만들기
- 입력
- git hub
- RESTful웹서비스
- 깃
- Git
- Today
- Total
It's Ward
[오늘의 삽질] JAVA에서의 Linked List 데이터의 정수 합 속도 비교 실험 본문
[오늘의 삽질] JAVA에서의 Linked List 데이터의 정수 합 속도 비교 실험
I'm ward 2022. 5. 28. 01:33*오늘의 삽질은 개발과 연관은 있지만 가볍게 남겨놓은 기록입니다. 혹시라도 누군가가 보신다면 편하게 의견 남겨주시면 감사하겠습니다.
2022.05.28 - [회고록/TIL] - [프로그래머스/JAVA] 다리를 지나는 트럭
해당 프로그램을 작성하면서 문득 생각이 들었다.
내가 지금 하고있는 방식이 과연 최적화가 되는 방식일까? 속도가 과연 빠를까?
물론 이 프로그램을 가독성 있게, 실제로 구현되는것처럼 되는것은 좋은데 나중에 실무에서 사용할 때, 어떤점이 가장 좋은방법일까를 고민했다.
항상 고민하지만 이번에 스트림을 쓰면서 갑자기 파파박 하고 떠오른 것이다.
간단하게 실험을 해보았다. 다른 코드는 고치지않고, 다리를 지나는 트럭에서 Bridge Queue의 전체 합을 구할 때, 어떤 방식이 가장 빠를까?
1. Stream - mapToInt() - sum()
스트림을 이용해 mapToInt를 통해 모두 정수형으로 변경한 후 더해주는 방식이다.
currentBridgeWeight =bridgeQ.stream()
.mapToInt(w -> w)
.sum();
2. Stream - reduce()
스트림을 이용해 reduce를 이용해 더해주는 방식이다.
currentBridgeWeight =bridgeQ.stream()
.reduce(0, Integer::sum);
3.for each문
향상된 for문을 이용하여 더해보았다.
for(int i : bridgeQueue)
currentBridgeWeight += i;
순서대로 각각 다음과 같은 결과가 나왔다.
인텔리제이에서 돌릴떄는 엄청나게 빠르던1. Stream - mapToInt() - sum(), 2. Stream - reduce() 이 실제 테스트 환경에서는 굉장히 느리게 작동하였다.
for Each문은 말도안되게 작동을 안했는데.. 인텔리제이에서도 작동이 안되었다. 프로그램 문제일 수도 있다 생각한다..
여기서, 나는 와 역시 Stream인가? 하고 감탄하고 있을때,
"아니 근데 굳이 비교할 때 마다 전체 무게를 더할 필요는 없지않나..?"
라고 생각하여 만들어 테스트하였을때..
2022.05.28 - [회고록/TIL] - [프로그래머스/JAVA] 다리를 지나는 트럭
.......................... Stream 연습한다고 다 풀고나서 두시간을 더 공부했는데...
오늘의 삽질.
계산방식 비교하면서 쓸 시간에 알고리즘을 잘 생각하자.
그래도 유익한 시간이였다..
'Java > 오늘의 삽질 - Truble Shooting' 카테고리의 다른 글
[Spring] Path with "WEB-INF" or "META-INF" 에러 해결 (0) | 2022.06.02 |
---|---|
JAVA - Integer.parseInt() 예외처리 (0) | 2022.05.26 |