n번 돌리는 loop를
n개의 thread 만들어서 돌리면 코어 하나만 쓰고 돌렸을때 비해서 성능 향상이 있음?
느낌상으로는 n에 따라 달라질 것 같은데
코어 성능 다 못쓰고 병목 때문에 느린건 쓰레드로 쓰면 성능 향상 될 것 같은데
코어 성능 다 쓰는 프로그램이면 오히려 쓰레드가 느릴것 같기도 하고
아니면 쓰레드 풀에 있는 쓰레드 다 쓸때까지는 성능 향상되다가 쓰레드 생성 시간 추가 되면 점점 느려져서 나중에 따라잡힘?
n번 돌리는 loop를
n개의 thread 만들어서 돌리면 코어 하나만 쓰고 돌렸을때 비해서 성능 향상이 있음?
느낌상으로는 n에 따라 달라질 것 같은데
코어 성능 다 못쓰고 병목 때문에 느린건 쓰레드로 쓰면 성능 향상 될 것 같은데
코어 성능 다 쓰는 프로그램이면 오히려 쓰레드가 느릴것 같기도 하고
아니면 쓰레드 풀에 있는 쓰레드 다 쓸때까지는 성능 향상되다가 쓰레드 생성 시간 추가 되면 점점 느려져서 나중에 따라잡힘?
(f(x) + 1/n ) y = 1 이던가 기억안나는데 비슷할거임
내가 말귀를 못 알아 먹는건지도 모르겠는데, 기본적으로는 쓰래드라는게 cpu자원을 시간분할해서 쪼개쓰는거라 쓰레드를 쓴다고 빨라진다가 아니고 쓰레드가 많아질 수록 컨텍스트 스위칭하는 비용이 더 크다라고 생각이 드는데, 다만 이건 옛날 cpu기준으로 생각한거고.... 요즘 cpu는 코어가 여러개라 병렬처리가 실제로 가능할테니
Cpu 코어가 몇개고 병렬처리 어떻게하냐 방식따라 니가 생각하는 속도 향상이 있을런지도 모르겠다. 나는 요즘 cpu는 전혀 모른다.
앞에 읽으면서 바로 까먹엇었네 싱글코어일때 어쩌구 다 얘기했구나...
암달의 법칙