비동기 I/O 등으로 반응 형 프로그래밍 기술을 배우고 있으며, 스레드를 전환하지 않는 이점에 대한 정통성있는 비교 데이터를 찾을 수 없습니다.자바 쓰레드 스위치는 얼마나 걸립니까?
명백하게 스레드를 전환하는 것은 계산에 비해 "고가"입니다. 그러나 우리는 어떤 규모로 이야기하고 있습니까?
중요한 질문은 "얼마나 많은 프로세서 사이클/명령어가 자바 스레드를 전환하는 데 걸리는가?"입니다. (범위가 필요합니다)
OS에 영향을 받습니까? 스레드 수에 따라 영향을받는다고 가정합니다. 비동기 IO가 블로킹보다 훨씬 좋은 이유입니다. 스레드가 많을수록 컨텍스트가 더 멀리 캐시에 저장되어야합니다.
비록 길 (방법)이 오래되었지만 관련 프로세서 사이클 (네트워크는 "지침", SSD 디스크가 적게 걸림)에 유용 할 수 있습니다. 코멘트
참고을 환영 - -
너무 나는 반응 응용 프로그램 (서버 당) 초당 10,000의 요청으로 1000 년대에서 이동하는 웹 응용 프로그램을 사용하도록 설정하는 것이 이해하지만 알 어렵다 내가 아는 문맥 전환의 속도에 영향을 줄 수있는 입력에 대해서는 거의 알지 못하기 때문에 이것은 막연하고 쓸모없고 멍청한 질문입니다. 아마도 통계적 답변이 도움이 될 것입니다. 예를 들어, 스레드의 60 % 이상이 전환하는 데 100-10000 프로세서 사이가 걸릴 것이라고 추측 할 수 있습니다.
y 직접 측정하지 마시고 우리와 공유 하시겠습니까? 그것은 유용 할 것이다! – Rugal
벤치마킹에는 어려움이 따른다. [Google caliper] (https://code.google.com/p/caliper/)를 사용하지 않으면 완전히 엉망이 될 것이라는 것을 알고 있지만 스레드 전환은 매우 어렵다고 생각합니다. 지정하십시오. 나는 _typical_ 값을 찾고있는 응용 프로그램 (primarly web 나는 추측한다)을 쉽게 설정할 수 없습니다. 유용하게 벤치마킹하려면 성능에 영향을 미치는 차원을 알아야하고 로컬 참조 수, 레지스터 수, 캐시 크기, 스레드 수, 잠금, 공유 변수 등을 추측 할 수 있습니다. – Stephen