Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stream Parallel() 언제 써? #3

Open
sendkite opened this issue Aug 3, 2022 · 1 comment
Open

Stream Parallel() 언제 써? #3

sendkite opened this issue Aug 3, 2022 · 1 comment
Assignees
Labels
question Further information is requested

Comments

@sendkite
Copy link
Contributor

sendkite commented Aug 3, 2022

주제

Stream Parallel()을 입력하면 병렬 처리가 가능하게 할 수 있다. 시의적절하게 써야 할때는 언제일까.

선정 배경

회사 코드에 parallel() 썼다. 왜냐면 병렬 처리니까. 더 빠른 성능을 낼꺼 같아서.
근데,, 쓰면 부하가 커져서 쓰면 안된다고 한다.

언제 쓰라는걸까

본론

참고 할...까

@sendkite sendkite added the question Further information is requested label Aug 3, 2022
@sendkite sendkite self-assigned this Aug 3, 2022
@sendkite
Copy link
Contributor Author

sendkite commented Aug 4, 2022

결론

parallel 동작이 어떻게 되는지 명확히 알기 전에는 사용하시면 안 된다.
병렬화를 통해서 스트림 성능 개선을 하시고 싶으면, 일단 스트림의 중간연산, 종단연산 내부 코드를 뜯어서 읽어보자.
즉, 모르면 쓰지말자..

상세 내용 from okky

하는일은 sum = sum + i 로 매우 간단한데.

덧셈 한번하겠다고 병렬처리하기위한 스레드에 나눠담는 작업(오버헤드)을 하느라 시간을 잡아먹어서 그렇습니다.
그정도의 작업은 단순 for문을 사용하면 더욱더 빨라지겠죠. (10배나 빨라지네요)

이득을 보려면 작업하나하나가 CPU를 꽤 많이 써야 이득을 볼수 있으며, 이경우
스트림으로 변환하는 비용의 비율이 상대적으로 줄어 단순반복문과의 차이가 많이 줄어들고,
병렬처리하려고 드는 비용이 더해져도 CPU수만큼 나눠서 얻는 이득이 크게 됩니다.

스크린샷 2022-08-04 오후 10 08 59

출처

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

1 participant