2011-12-17 129 views
3

我一直用於開發跨平臺的應用程序,不過,這一次的Java解決不了我的問題的Java。問題是,我必須開發一個計算成本很高的應用程序。更確切地說,在我的應用程序中有一個有點太重的模擬。我製作了一個java原型應用程序,但速度不夠快,而且我的模擬有一些滯後,所以我開始考慮切換到C++。 我的應用程序有一個圖形用戶界面,我想知道如果我想切換到跨平臺應用程序的C++,我該怎麼處理GUI? 我的問題是:爲Java合適的替代開發跨平臺應用程序

  1. 如果我使用Qt框架,是我的應用程序將是顯著更快?
  2. 如果我部署我的jar文件到本機操作系統的可執行文件(.exe,的.app等)是我的應用程序將是顯著更快?

附: Mac OSx,Windows和Ubuntu是我的軟件的目標平臺。

+11

您是否分析了Java版本中性能較差的地方,並試圖改進它? –

+0

是的。我清理/改進了我的代碼 - 儘可能達到最高水平。仍然很慢。線程也不能解決問題。 – Pouya

+1

正如@JonSkeet所說,一旦你在Java版本中發現問題並改進它,你總是可以在C++中編寫「慢」部分,並通過JNI調用 – Deco

回答

4

這篇文章可能幫助你,我面對同樣的問題幾年前。我決定堅持使用Java來獲得自己的編程經驗,因爲我對C++並不擅長,而且我的項目說實話,很簡單。如你所知,Java在世界各地都很普及,有大量的文檔和庫可以供你使用,Qt更快,但是你需要煞費苦心才能完成這項工作。如果表現是你的目標,那麼去Qt。或者重新設計你的應用程序到hava Java/Swing GUI和C++程序服務器端。無論如何,這裏的鏈接。

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

爪哇/擺動可能適合某些項目,特別是沒有圖形用戶界面 或具有有限GUI功能。 C++/Qt是一個全面優秀的解決方案,特別是對於GUI應用程序。

+0

+1!如果你不想/不能做Java,那肯定是C++中的可移植GUI應用程序。 – fge

2

用C++而不是Java提高CPU的性能,有時高達10-30%。但是,使用多線程還會增加可用CPU的數量。鑑於使用多線程無濟於事,我懷疑你的瓶頸不在CPU中,並且切換語言不太可能有所幫助。

其中C可以幫助您編程圖形卡,例如, CUDA。對於使用高性能處理卡的某些類型的問題,您可以獲得顯着更快的結果。 http://www.nvidia.co.uk/object/cuda_home_new_uk.html有一些JOCL庫可以使用來自Java的CUDA,但實際工作的代碼採用C語言。

我建議您確定您的瓶頸真的是切換到C++不會增加您的高速緩存的大小,你的內存帶寬,帶寬IO和你的主內存的大小。