2013-05-14 2 views
2

Windows 컴퓨터에 스칼라 IDE 설정이 있습니다. 같은 컴퓨터에서 테스트 프로그램을 실행하면 성능 수치가 올라갑니다.Windows에서 컴파일시 리눅스에서의 akka 성능

8 코어 32GB 머신 인 Linux 컴퓨터에서 동일한 프로그램을 실행하기 위해 생성 된 클래스 파일과 scala + akka jar를 Linux 컴퓨터에 FTP 전송했습니다.

Linux 컴퓨터는 Server Edition Java를 사용하고 windows 컴퓨터는 Client edition Java를 사용합니다.

모든 경로가 올바르게 설정된 Linux 컴퓨터에서 같은 프로그램을 실행하면 Windows 컴퓨터보다 성능이 떨어집니다.

왜 이렇게됩니까? 이 프로그램은 잘 돌아갈 수는 있지만 고성능 컴퓨터와 서버 에디션에서는 제대로 작동하지 않습니다.

컴파일 및 실행 환경의 차이점 때문입니까? 이 행동에 대한 이유를 조사하기 위해 내가 할 수있는 일은 무엇인가.

편집 : 컴파일 할 위치는 32 비트이고 Linux 컴퓨터의 java는 64 비트 서버입니다. 성능에 어떤 차이가 있습니까?

+0

감사합니다. 하지만 내 주된 의문은 내가 리눅스 박스에 넣을 뭔가를 놓친 경우입니다. 예 : jar/lib 등. 리눅스 상자에 적절한 scala 셋업을 가지고 있지 않으며 classpath에있는 명령 행 위젯을 사용하여 직접 클래스 파일을 호출한다. (스칼라 IDE 일식 env에서와 같이) – weima

+0

간단히 말해서, 내 Windows 컴퓨터에서와 동등한 성능이 아닙니까? – weima

+0

예, sbt를 통해 실행하는 것이 중요합니까? 이미 적절한 클래스 경로로 실행 중이고 -Xms2048m -Xmx2048M -X : + UseParNewGC -server -XX : + UseConcMarkSweepGC -XX : + CMSIncrementalMode options – weima

답변

0

JVM 버전과 두 환경 모두에서 java 명령에 전달 된 모든 플래그와 같이 Java 구성을 두 시스템에 게시하면 도움이됩니다.

또한 어떻게 성능을 측정하고 어떤 값을 얻습니까? I/O, 네트워크 트래픽 등과 같은 다른 문제가 있습니까? 그렇지 않은 경우 프로그램에서 어떤 알고리즘이 사용되고 있습니까? 계산하고 종료하는 프로그램입니까, 아니면 종료 될 때까지 실행되는 서버 프로그램입니까?

메모리 구성 (@ alex23에서 제안한 것과 같이)과 -server 플래그에 특히 중점을 두어야합니다. 또한 Linux 환경이 Windows 환경과 동일한 제조업체의 JVM을 사용하는지 확인하십시오. Windows는 일반적으로 Sun JVM과 함께 제공되는 반면 일부 Linux는 이전 Oracle JVM을 사용할 수 있습니다. 명령 행에서 java -version을 시도하십시오.

또한 복잡한 프로그램의 결과를 비교하는 대신 간단한 프로그램을 먼저 시도하십시오. Java/Scala 코드의 유효 런타임과 비교하여 JVM을 부팅하는 오버 헤드를 결정하십시오.

Windows 기반 빌드로 인해 Linux 컴퓨터에서 성능 문제가 발생한다는 생각은 거의 들리지 않습니다. Linux 컴퓨터에서 소프트웨어를 컴파일하고 실행하면 쉽게 확인할 수 있습니다.

+0

안녕하세요, 윈도우 자바 버전 : 1.6.0_29 리눅스 자바 버전 : 1.6.0_12이 차이가 있습니까?사용 된 옵션 : -Xms2048m -Xmx2048M -XX : + UseParNewGC -server -XX : + UseConcMarkSweepGC -XX : + CMSIncrementalMode – weima

+0

버전은 괜찮아 보입니다. 그들은 차이를 만들어서는 안됩니다. 어쩌면 다른 제안을 시도해 볼 수 있습니다. 왜 기계가 느린지를 알아내는 것은 쉽지 않습니다. – Madoc