2011-12-17 4 views
3

저는 크로스 플랫폼 애플리케이션 개발을 위해 항상 Java를 사용했지만 이번에는 자바가 내 문제를 해결할 수 없습니다. 문제는 계산 비용이 많이 드는 애플리케이션을 개발해야한다는 것입니다. 좀 더 정확히 말하자면, 내 응용 프로그램에는 약간 무거운 시뮬레이션이 있습니다. 나는 자바 프로토 타입 응용 프로그램을 만들었지 만 충분히 빠르지 않고 시뮬레이션에서 약간의 지연이있어서 C++로 전환하기 시작했다. 내 응용 프로그램에 GUI가 있고 크로스 플랫폼 응용 프로그램에서 C++로 전환하려면 GUI로 무엇을해야합니까? 내 질문은 : 크로스 플랫폼 애플리케이션을 개발하기위한 Java의 적절한 대체

  1. 내가 Qt는 프레임 워크를 사용하는 경우

    , 내 응용 프로그램은 속도가 매우 빠르고을 을 될 것입니다?
  2. 기본 os 실행 파일 (.exe, .app 등)에 내 jar 파일을 배포하면 내 응용 프로그램이 이 될 것입니다.이 더 빠릅니까?

p.s. Mac OSx, Windows 및 Ubuntu는 내 소프트웨어의 대상 플랫폼입니다.

+11

Java 버전에서 성능이 느린 부분을 분석하여 개선을 시도 했습니까? –

+0

예. 가능한 한 최고 수준까지 코드를 정리/개선했습니다. 여전히 느립니다. 스레딩은 문제를 해결하지 못합니다. – Pouya

+1

@JonSkeet이 말했듯이 Java 버전에서 문제를 발견하고이를 개선하면 C++에서 "느린"부분을 작성하고 JNI를 통해 호출 할 수 있습니다 – Deco

답변

4

이 기사는 당신을 도울 수 있습니다, 나는 몇 년 전에 같은 질문에 직면 해 있습니다. 나는 C++에서 그다지 좋지 않았고, 솔직히 말해서, 프로젝트가 솔직하고 매우 간단했기 때문에, 내 자신의 프로그래밍 경험을 위해 자바를 고수하기로 결정했다. 아시다시피 자바는 전 세계적으로 매우 넓고 넓으며 다양한 문서와 라이브러리를 사용할 준비가되어 있습니다. Qt는 더 빠르지 만 작업을 수행하려면 손을 더럽힐 필요가 있습니다. 실적이 목표라면 Go Qt. 또는 Java/Swing GUI 및 C++ 프로그램 서버 측에 응용 프로그램을 재 설계하십시오. 어쨌든 여기에 링크가 있습니다.

http://turing.iimas.unam.mx/~elena/PDI-Lic/qt-vs-java-whitepaper.pdf

자바/스윙, 특히 GUI를 없이 또는 제한된 GUI 기능으로, 특정 프로젝트에 적합 할 수 있습니다. C++/Qt는 특히 GUI 애플리케이션의 전반적인 우수한 솔루션입니다.

+0

+1 Qt! Java를 원하지 않거나 할 수 없다면 C++에서 이식 가능한 GUI 응용 프로그램을 만드는 방법이 분명합니다. – fge

2

Java 대신 C++을 사용하면 CPU 성능이 향상되고 때로는 10-30 % 정도 향상됩니다. 그러나 여러 스레드를 사용하면 사용 가능한 CPU의 양이 늘어납니다. 여러 스레드를 사용하면 도움이되지 않는다는 것을 감안할 때 병목 현상이 CPU에 없으며 언어 전환이 도움이되지 않을 것으로 생각됩니다.

여기서 C는 그래픽 카드 프로그래밍에 도움이 될 수 있습니다. CUDA. 고성능 처리 카드를 사용하면 특정 유형의 문제에 대해 매우 빠른 결과를 얻을 수 있습니다. http://www.nvidia.co.uk/object/cuda_home_new_uk.html Java에서 CUDA를 사용하는 JOCL 라이브러리가 있지만 실제 작업을 수행하는 코드는 C와 유사한 언어입니다.

C + +로 전환하면 캐시 크기, 메모리 대역폭, IO 대역폭 또는 주 메모리 크기가 증가하지 않으므로 병목이 실제로 어디에 있는지 판단하는 것이 좋습니다.

관련 문제