이것은 Windows XP 및 Java 1.6.0_07이 포함 된 듀얼 코어 Athlon II에 있습니다. 몇 가지 스레드를 사용하여 계산을 수행하는 벤치 마크 프로그램이 있으며 실행하는 데 10 초가 걸립니다.듀얼 코어 프로세서에서 다른 프로그램이 동시에 실행되는 경우 프로그램이 더 빠르게 실행됩니다!
데모 용으로 스레드를 사용하지 않고 동일한 계산을 수행하는 다른 프로그램이 있습니다. Math.cos()를 호출하는 메서드를 호출하는 루프를 사용하면 매우 간단합니다. 이것이 실행되면 java.exe는 CPU의 50 %를 사용하고 시스템 유휴 프로세스는 50 %를 사용합니다. 내가 예상했던대로. 하지만 예상했던대로 약 20 초 정도 걸리는 대신 30 초 정도 걸립니다. 작업 관리자는 각 코어의 사용률이 약 50 %임을 보여줍니다.
두 개의 명령 프롬프트 창을 열고 각각 두 번째 프로그램을 실행하면 두 프로세스가 동시에 실행되고 약 19 초 걸립니다. 각 코어의 사용량은 100 %입니다.
하나의 프로그램 만 실행 중일 때 스케줄러는 컨텍스트 전환시 사용할 코어와 시간의 1/3을 결정할 수 없습니다.
내 질문에 :이 일이 발생할 것으로 기대하거나, 어떤 종류의 잘못된 구성을 나타 냅니까?
실험이 이상한 결과를 공개 할 수 있다는 사실이다 UPDATE. 여기에 대한 답변 (및 링크 된 기사)은 매우 유용했습니다. 왜냐하면 내가 더 큰 그림이 아닌 세부 사항에 집중했기 때문입니다.
질문을 한 결과,이 특별한 경우는 프로세서가 완전히로드되지 않은 경우 클럭 속도를 줄이는 전원 관리 소프트웨어와 관련이 있음을 발견했습니다. 이것은 다중 스레드를 사용하지 않는 프로그램에 불이익을줍니다.
실제 응답은이 유형의 마이크로 벤치마킹을 수행 할 때 이상한 결과가 나타날 것으로 예상해야한다는 것입니다. –
당신은 그것이 일어날 것을 "기대"하지 않아도된다고 이미 말했습니다. – Cosmin