我必須通過對專案進行多執行緒處理來從應用程式中獲得性能。到目前為止,我嘗試創建一個任務來處理 2048 段音頻,并且將為每個段創建該任務以獨立運行。但是,這種配置意味著要執行數千個任務,這會導致更多的性能問題,更不用說我找不到將現有遞回 FFT 轉換為迭代 FFT 以保持分段與任務的 1:1 的方法。繼續嘗試這樣做有什么好處嗎?還是我應該更多地考慮在其他地方優化應用程式。
uj5u.com熱心網友回復:
在將轉換作為串行行程運行時,查看您計算機上的核心使用情況。你的 CPU 用完了嗎?如果沒有,那么并行庫可以幫助您獲得更多的計算能力。
我建議閱讀有關 C# 中并行庫(程式集)的教程和理論。
uj5u.com熱心網友回復:
我最終選擇了 Klamsi 的解決方案(對問題發表了評論)。在進行了更多的清理和錯誤修復之后,我選擇了一種資料結構,該資料結構將被排隊,其中包括輸出陣列中資料的相應索引,以避免結果的順序錯誤。之后的結果(帶有輸出鎖定):除錯順序:2.1ms 除錯多執行緒:2.6ms 發布順序:~940ms 發布多執行緒:~650ms
release 多執行緒可以在不鎖定的情況下達到 500-600 左右。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/517038.html
標籤:C#多线程
