2011-12-21 56 views
3

我試圖弄清楚如何在實時音頻應用程序中存儲定時事件,這些應用程序可能會隨時跳過很多時間,並且需要以儘可能最低的延遲時間運行。基本上,引擎知道'現在'是什麼時間,但'現在'可能是非線性的,並且將來會有多個'nows'。我想知道是否:實時應用程序中最快時間執行的最快C++映射?

a)當時間值鍵入的某個時間的C++映射甚至是可行的,當可能有成千上萬的條目時b)哪個映射或散列表實現將給我最好的性能,哪裏最好意味着最低的情況下執行,而不是最低的平均。即使偶爾需要很長時間的實現也將無法使用,但具有更確定性結果的實現會更好。 c)對於現在共享相同事件的一堆事件,是否應該使用某種散列多地圖或在給定時間鏈接所有事件的列表?

我接受任何其他建議,如何做到這一點,或指向資源。時間以它自己的格式編碼,代表部分:bars:beats:ticks

謝謝! iain

+0

有沒有人有這種類型的事情朱迪數組的經驗? – 2011-12-21 02:48:40

+0

哇,它們看起來像一個很好的數據結構!我不知道實現過程有多複雜,但如果你能讓他們使用後備列表來保證固定時間分配,他們可能會成爲你的情況的勝者。 – dasblinkenlight 2011-12-21 03:36:35

回答

4

沒有什麼可以讓你不必從簡介你的代碼,看看你自己。

使數據類型儘可能易於更改,保持一切模塊化和參數化,然後只運行一些測試。

std::multimapstd::unordered_multimap開頭,以時間爲關鍵。兩者都應該有不錯的表現。也嘗試一些不同的分配器。

+0

我太新來投票了,所以我只是說感謝而已! – 2011-12-21 19:11:19