只是把它弄出來的方式...速度比較 - 模板專業化與虛擬功能與if語句
Premature optimization is the root of all evil
Make use of OOP
etc.
我明白了。只是尋找一些關於某些操作的速度的建議,我可以將這些操作存儲在灰色物體中供將來參考。
假設你有一個動畫類。動畫可以循環播放(循環播放)或不循環(播放一次),它可以具有唯一的幀時間等等。假設有3個這樣的「任一」或「屬性」。 請注意,Animation類的任何方法至多會檢查其中的一個(即,這不是if-elseif的巨大分支的情況)。
這裏有一些選擇。
1)給它一個上面給出的屬性布爾成員,並使用if語句來打去執行相應的操作動畫時檢查對付他們。
- 問題:有條件地檢查每次播放動畫。
2)做一個基礎的動畫類,並從中獲得其他動畫類,如LoopedAnimation和AnimationUniqueFrames等
- 問題:在每次調用的V表檢查,以播放動畫因爲你碰到這樣的一個
vector<Animation>
。另外,爲所有可能的組合創建一個單獨的類看起來代碼笨拙。
3)使用模板專業化,並專門化那些依賴於這些屬性的函數。像template<bool looped, bool uniqueFrameTimes> class Animation
。
- 問題:與此問題是,你不能只有一個
vector<Animation>
的東西的動畫。也可能會臃腫。
我想知道什麼樣的速度每個選項提供?我對第一和第二選項特別感興趣,因爲第三個選項不允許我們遍歷一個通用容器Animation
s。
總之,什麼是快 - 一個虛函數表讀取或條件?
嘗試自己測試一下。 – Blindy 2010-05-13 23:22:48
這些屬性的實際值是在運行時還是在編譯時確定的?例如,如果您要加載用戶指定的文件,那麼屬性在運行時確定,當然。如果動畫是預先確定的,那麼這些值在編譯時已知。那麼,你在處理哪種情況? – AnT 2010-05-13 23:41:40