자바에서 cpu의 여러 코어를 골고루 사용하고자 여러개의 스레드를 만들고 작업을 분산처리했을때 왜 싱글스레드에서 처리하는것보다 오래걸림?
프로세스 모니터 보는데 여러개의 쓰레드를 동시에 사용해도 하나의코어에 작업이 집중되는것 같음 다른코어들의 사용량도 조금 올라오긴하는데 하나만 100%사용량이 찍힘
반대로 싱글스레드로 구동해도 하나 100%찍히고 다른 코어들 사용량 조금씩 올라옴 이러면 스레드 사용의미가 없는데 대체 어디가 문제인지 모르겠네
댓글 8
쓰레드가 하는일이 별로 없을땐 싱글이 더 빠름
C751AE30C787(61.253)2021-05-17 22:34
답글
분산하는데도 들어가는 시간이 있어서
C751AE30C787(61.253)2021-05-17 22:34
너가 하는 작업이 동시처리에 적합하지 않을 수도 있엉
동시처리와 병렬처리는 다른개념이야
+ 너가 잘 쓰고 있어도 암달의 법칙때문에 효용이 안느껴지는 걸 수도 있어
익명(77.111)2021-05-17 22:38
벽돌나르기같은건 여러명이서 하면 빠르지만 뭐 순서가 잇어서 a를 다 끝내야 b를 시작할수있고 이런거면 더 느려지는거 아닐까
익명(218.157)2021-05-17 22:41
아니아니 아직 내 프로그램엔 적용 안했음 지금 그냥 간단한 덧셈연산(스레드별 개별, 값 취합 안하고 그냥 연산횟수별 시간 비교용 단순 덧셈) 싱글 스레드에서 50초걸리는게 멀티스레드(내컴퓨터 8코어 16하이퍼 스레드) 8개 스레드로 분산해서 싱글스레드 연산횟수의 1/8씩 돌아가게 만드는데 최종적으로 연산 끝나는 시간이 70초 넘음
쓰레드가 하는일이 별로 없을땐 싱글이 더 빠름
분산하는데도 들어가는 시간이 있어서
너가 하는 작업이 동시처리에 적합하지 않을 수도 있엉 동시처리와 병렬처리는 다른개념이야 + 너가 잘 쓰고 있어도 암달의 법칙때문에 효용이 안느껴지는 걸 수도 있어
벽돌나르기같은건 여러명이서 하면 빠르지만 뭐 순서가 잇어서 a를 다 끝내야 b를 시작할수있고 이런거면 더 느려지는거 아닐까
아니아니 아직 내 프로그램엔 적용 안했음 지금 그냥 간단한 덧셈연산(스레드별 개별, 값 취합 안하고 그냥 연산횟수별 시간 비교용 단순 덧셈) 싱글 스레드에서 50초걸리는게 멀티스레드(내컴퓨터 8코어 16하이퍼 스레드) 8개 스레드로 분산해서 싱글스레드 연산횟수의 1/8씩 돌아가게 만드는데 최종적으로 연산 끝나는 시간이 70초 넘음
C#, cpp로 같은 로직 방금 구현해서 테스트했는대 개빡치게 자바만 멀티스레드가 느림 왜이런거임?
진짜 개스트레스받네
그냥 소스 올리는 게 가장 빠름