2016-09-29 46 views
-4

簡單的開關,我組合了許多類,要麼指針功能VS高速音頻節目

一看簡化一些階級結構。有一個簡單的switch語句,使用在類的初始化時分配的變量,它改變了類中的一些函數行爲。

b。使用函數指針來定義類中的不同行爲。這些指針將在類初始化中分配。

在需要速度的音頻中,a。看起來更清潔,也許比b更安全。 我的問題是 - 開關語句(a。)比函數指針(b。)慢得多?
是否有一個更簡單的方法,就像模板類型的類根據初始化變量而變化,但是對於所有變體具有相同的輸入變量,或者我是否希望太多?
在此先感謝

+0

答案會因您打算運行程序的硬件而有很大差異,所以唯一真正的方法是自己測試一下:提出一個適當的性能測試,然後重新編寫代碼,然後看看哪種方式執行速度更快(無論如何你最終必須這樣做,以確保你的改變實際上改善了事情,所以你最好先做) –

+0

也就是說,你可能會通過避免函數指針和儘可能地切換語句,特別是如果它們是每個樣本都會被調用的東西。如果可能的話,嘗試將這些結構從最內層的每個採樣循環中提取出來。 –

+0

嗨,這些類不在音頻循環中。它們用於滑塊行爲,它位於較慢的計時器上。我會做性能測試。謝謝 – ddd

回答

-1

因爲這是C++,它似乎是明顯的答案是「C」:使用virtual functions

您的(a)和(b)的問題幾乎不可能回答,主要是因爲這些問題只能通過分析器回答。謹防過早優化。由於編譯器編寫者和硬件設計者傾向於爲通用習慣用法進行優化,所以爲了速度而試圖變得棘手可能會有問題。如果你做的奇怪的東西,那麼你會錯過這個。

+0

嗨,我已經使用了豐富的虛擬功能,但這是一個好主意。我可以在長鏈類的末尾定義這些函數,但是對於每個虛函數還是需要一個不同的類?謝謝 – ddd