2010-12-12 70 views
3

我試圖創建一個從不同的Web服務獲取數據的使用者應用程序。 應用程序必須處理實時大容量數據。我只能在性能的基礎上選擇Java和C++。請建議。Java與C++:使用Web服務的應用程序的性能

謝謝。

+0

試一試[programmers.stackexchange.com](http://programmers.stackexchange.com/) – casablanca 2010-12-12 16:37:28

+1

就性能而言,兩種語言都是一樣的。編寫良好的C++應用程序的速度與編寫良好的Java應用程序的速度相同。表現是**不**你應該用來作出決定的標準。 – 2010-12-12 17:38:50

回答

6

網站的性能差異並不像您擁有的技能那麼重要。用一種語言寫得好的應用程序比其他應用程序寫得不好。恕我直言,你真的需要知道你在C++中做什麼來編寫一個寫得很好的應用程序,在Java中它更容易編寫一個寫得很好的程序,因爲它不需要相同的技能水平。

我同意@賈森的觀點,你不應該考慮這一個或其他解決方案。在一個典型的應用程序中,90%的時間花費在10%的代碼中。即使您發現C++速度更快,您只需要爲10%的代碼執行此操作。

但是,我懷疑你最好花時間看看硬件和網絡基礎設施,因爲這些可以帶來更多的差異,並且很容易被開發人員忽略。

+1

這在理論上是正確的。在實踐中,有[Audacity](http://audacity.sourceforge.net/)與商業/昂貴/華麗/糖衣基於Java的等價物。關於.NET工作室與傳統VC++的相同之處6.理論上,這種緩慢和低效率沒有理由。然而,在實踐和現實世界中,它是存在的。 – Withheld 2013-01-09 17:47:32

+1

那裏有一些垃圾紀念技術。 ;) – 2013-01-09 17:49:40

+1

在Java中,我開發了一種交換,它支持所有綁定和出站消息的持久性,持續吞吐量爲每秒一百萬個請求/事件,典型的往返延遲小於1微秒,同一臺機器。在C++中,我可能會使它更快,但我真的需要嗎? ;) – 2013-01-09 17:52:32

1

通常可以用C++編寫軟件,該軟件比用Java編寫的等效軟件更有效地處理數據。差異往往是微不足道的。

因爲C++很複雜,所以新手程序員編寫的C++的表現非常弱。 Java更簡單,所以很難在Java中犯這麼大的錯誤。

2

如果您的方案由於網絡帶寬而存在瓶頸,那麼只要它有效地處理I/O,使用的語言可能並不重要。 Java和C++都做得很好。

如果您的方案由於計算帶寬而出現瓶頸,C++可能會更有效。通過JIT編譯和其他技術,Java近年來變得相當高效。

如果我自己這樣做,我更喜歡Java到C++,因爲它是一種更高級的語言,具有更好的工具,並且通過內存管理可以減少錯誤發生的機會。我會用Java對原型系統的計算部分進行原型設計,並看看它是如何執行的。如果足夠,我會留在爪哇。否則,我會與C++進行比較,如果有性能優勢,可能使用JNI或JNA來執行C++中的高性能計算。

相關問題