2011-12-06 25 views

回答

6

如果您對C++或Java更加適應,我會使用它。您可以用任一種語言編寫低暫停服務器。

流媒體服務器主要是將大量數據從A傳遞到B,即I/O問題。除非您打算實時壓縮數據流,否則CPU性能不太重要。

即使你正在進行壓縮並且Java的速度不夠快,你可以調用一個庫(最好是已經編寫/測試的庫)來通過JNI來完成這個工作,並且仍然使用Java編寫大部分的服務器。

4

聳肩這不是一個糟糕的選擇。雖然音頻流確實具有性能組件,但您所做的算法/優化將比您選擇的語言具有更大的效果。

更不用說着名的Knuth報價「過早優化是萬惡之源」。寫下你最喜歡的任何東西,然後檢查它是否有問題。

-1

如果你確實想使用Java,here會找到一些應用和文件在Java中使用媒體的好地方......

+2

自1999年以來,Java中的媒體框架發生了一些變化,我認爲...... – Flexo

3

與Java性能最大的問題,我認爲,是垃圾收集。如果不仔細考慮你正在做什麼,在Java中編寫需要經常停頓以清理的代碼很容易。 C++沒有這個問題。另一方面,如果不考慮你在做什麼,編寫泄漏堆內存的C++代碼很容易(當你忘記從堆中刪除某些內容時)。這對於像服務器這樣的長時間運行的程序來說真的很糟糕。在Java中可能會泄漏內存,但這與保持引用時間過長有關,而不是內置於語言中的任何內容。

雖然C++往往會更快,但對於Java的現代即時編譯器而言,性能差異往往被誇大了。對於流式音頻服務器來說,整體Java可能與C++一樣好。如果您發現某些計算密集型環節存在瓶頸,則可以使用Java Native Interface下拉到C++。但是,這應該只是在確定分析問題之後。

+0

+1以獲得公正,準確和平衡的答案。 – Mikaveli

相關問題