2013-10-17 27 views
-1

我有一個應用程序,可以接收32個實時音頻流,對它們進行編碼/壓縮,並通過網絡發送出去,並在OSX(10.8.x)上運行。分析顯示,大部分CPU時間都花在壓縮器/編碼器功能上,Activity Monitor顯示CPU利用率約爲40%。該應用程序工作正常,單線程,它只佔用一個處理器核心相當多。Single Threaded vs Multithreaded,我是否應該關心轉換爲多線程?

只是爲了好玩,我實現了一堆併發調度隊列來利用多核心處理,現在大部分並行編碼都做了。活動監視器顯示我現在平均分佈在CPU上,但是當然我仍然使用相同比例的整體CPU容量(事實上,由於GCD開銷稍微多一點)。

唯一真正的優勢是多線程情況下的音頻數據包比單線程情況下的傳輸速度大約快4ms,但這對於整個系統性能並沒有什麼大不了的。

所以問題是這樣的:鑑於應用程序運行「OK」單線程的事實,是否還有其他好處不佔用一個處理器?假設我們有一個4核心處理器,使用一個核心的40%或四個核心的10%是好還是壞?數學會說這是一樣的。

或者,我只是毆打自己沒有?

感謝,

+0

現在好了,你有它並行工作,不應該你能夠強調測試它。看看有沒有什麼優勢?直觀地說,你現在應該對系統的瞬間負載更有彈性,對吧? –

+0

問題是系統仍然看起來很活潑(完全是主觀觀察),不管應用程序是單線程還是多線程的。考慮到有足夠的帶寬來處理這個問題,我試圖讓我的腦海裏是否有任何隱藏的好處來將負載分散到多個核上。 – chuckd

回答

2

只要你使用一個核心的低於100%,沒有對多線程它太大的優勢。

OTOH,很可能並非所有的用戶都擁有與您的用戶一樣快的Mac。如果您的程序運行在速度較慢(但仍然是多核)的Mac上,那麼單線程會將內核固定爲100%,那麼多線程會加速該Mac上的內容。

相關問題