2016-03-15 43 views
0

我一直在研究用Pd構建的合成器並在BeagleBone Black上運行它。爲此,我寫了一些抽象和兩個外部。目前合成器是單聲道的,啓動時使用100%的CPU,造成很多聽得見的咔嗒聲和僞影。大約5秒後,CPU「穩定」到75%,延遲和聲音非常好。分析和優化PureData補丁和外部設備

現在,我需要使合成器和絃,因此CPU時間必須爲額外的聲音釋放。爲此,我正考慮使用調試符號構建Pd,並通過諸如Callgrind/KCacheGrind之類的分析器運行我的修補程序,以試圖找出大部分CPU消耗正在發生的位置並圍繞此優化進行優化。

任何人都可以分享任何技術或提示用於優化Pd補丁和外部?對於這種任務,是否有專門針對Pd的工具?任何理由爲什麼我的方法會或不會工作?

回答

0

使用完整的探查器工具當然是一種選擇。主要的缺點是,它們會大大減慢系統的速度,所以你可能需要一個完全自動化的測試用例(而不是依賴於環境的實時性)。

作爲用於貼片分析,鈀提供最好的是[realtime]對象,則可以使用以測量所需要的時間(掛鐘時間,不邏輯時間這應該是零),以執行特定操作在消息域。但是,這是不可用的信號對象!

下面是一個例子來分析子樹(在[pd complicated]子片內)的全面執行和一些特定的對象(在[pd complex]子片內)

Profiling patch

從你的描述,似乎你的補丁在初始化過程中花費了很多時間(最大化CPU,因此需要一段時間才能降到100%以下),這很可能表示消息域中存在問題。

至於信號域,典型問題包括重新鎖定到小塊大小([block~ 1]),並計算未使用的聲音(如果它們添加到信號輸出,則將其關閉,使用[switch~]關閉它們)。

1

你的補丁似乎很重。這意味着您在運行合成器時可以隨時進行大量計算。它是什麼類型的合成器?

通常是一種降低計算成本的方法,它是先固定值,首先計算一次。 (例如,如果您始終使用相同的值,則可以在數組上讀取它,而不是隨時計算它)。 您可以告訴我們更多關於您程序的架構,也許我們將能夠更具體地幫助您。

祝你好運!