2013-09-25 3 views
7

XML 파일을 구문 분석하는 작은 Windows 데스크톱에서 Java 응용 프로그램을 개발했습니다. 나는 매우 흥미 롭다는 흥미로운 관찰을 만났다.Java 응용 프로그램 Windows와 Mac OS X

필자는 내 응용 프로그램 용 실행 가능 jar 파일을 생성하고 Windows 서버 컴퓨터에서 실행했습니다.이 파일은 매우 강력합니다. 2.7GHz, 50GB RAM 및 7200RPM HDD로 클록 된 8 개의 코어 각각 2 개의 물리적 제온 프로세서가 있습니다. 내 응용 프로그램을 시작할 때 컴퓨터가 유휴 상태였으며 다른 응용 프로그램이 나와 컴퓨터를 공유하지 않았 음을 확신합니다.

나중에 Macbook Pro에서 실행 파일을 실행하여 재미있게 볼 수 있습니다. 개인용 컴퓨터는 코어 i7으로 2.2GHz에서 4GB RAM 및 5400RPM HDD로 작동됩니다.

놀랍게도, 응용 프로그램은 내 개인용 기계에서 두 배 빠릅니다. 동일한 입력 \ 동일한 출력이었습니다. 입출력은 없지만 XML을 읽음으로써 터미널에서 아무것도 인쇄하지 않고 시작 시간/종료 시간을 출력합니다 & 한 줄로 된 최종 결과

이러한 극적인 성능 차이의 원인을 이해하는 것은 매우 흥미로운 일입니다. 특히 하드웨어 수준에서는 약한 기계에서 발생합니다. 더 나은 방법으로 하드웨어를 처리하는 운영 체제입니까? JVM이 더 잘 작동합니까?

답변

9

Windows의 경우 JRE의 기본 설치에는 HotSpot Client 컴파일러가 제공됩니다. 이 컴파일러는보다 적극적인 최적화를 수행하고 훨씬 빠른 코드를 생성하는 서버 HotSpot과는 달리 기본 최적화만을 수행합니다. Server HotSpot은 Mac OS X를 포함한 대부분의 Unix 계열 및 Linux 배포판에서 기본적으로 사용됩니다. 두 컴파일러 간의 성능 차이는 2-3 배가 될 수 있습니다. 클라이언트 HotSpot은 주로 데스크톱 응용 프로그램의 빠른 시작을 위해 최적화되었으며 장기 실행 프로세스의 최고 성능을 위해 제공되지 않습니다.

java -version 

내 컴퓨터에 그것을 제공합니다 :

는 다음과 같은 명령을 실행을 사용하고있는 컴파일러를 확인하려면

java version "1.6.0_45" 
Java (TM) SE Runtime Environment (build 1.6.0_45-b06) 
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode) 
         ^^^^^^ this 

를 Windows에서 서버 핫스팟을 얻으려면을, 당신은 JDK를 다운로드하고 설치해야 -server 명령 줄 스위치를 사용하여 프로그램을 실행하십시오.

+0

안녕 Piotr, 이것에 대해 확실합니까? 이렇게 극적인 성능 차이가 발생하고 성능이 훨씬 떨어지는 시스템이 훨씬 나은 성능을 보일 수 있습니다. Windows를 Linux 배포판으로 대체해야한다고 생각합니까? 매우 유익한 정보에 감사드립니다. 감사합니다. – mowienay

+0

먼저, Windows 시스템에서 HotSpot 컴파일러의 유형을 확인하십시오. 성능 차이에 대한 다른 이유가있을 수도 있지만 이것은 내 머리 꼭대기에서 나온 것입니다. –

+0

나는 네가 한 말을 좋아했다. 서버 주문을 사용하여 내 개인용 맥처럼 내 데스크톱 Windows 컴퓨터에서 작동했습니다. 그것은 매우 유익한 조언이었습니다. Server 강력한 시스템에서 성능을 확인하게되어 매우 기쁩니다. 다시 감사합니다 – mowienay

관련 문제