Самая быстрая карта C ++ для худшего времени выполнения в приложении реального времени? - PullRequest
3 голосов
/ 21 декабря 2011

Я пытаюсь выяснить, как я хочу хранить синхронизированные события в аудио-приложении в реальном времени, которое может часто перемещаться во времени и должно работать с минимально возможной задержкой. По сути, движок знает, сколько сейчас «сейчас», но «сейчас» может быть нелинейным, и в будущем может быть несколько «сейчас». Мне интересно, если:

a) карта C ++ некоторого времени, основанная на значениях времени, даже возможна, когда могут быть тысячи записей б) какая реализация карты или хеш-таблицы даст мне лучшую производительность, где лучшее означает наименьшее наихудшее выполнение, а не наименьшее среднее. Реализация, которая время от времени занимает действительно много времени, будет непригодна для использования, что-то с более детерминированным результатом будет лучше. в) если для группы событий, имеющих одно и то же время, следует ли использовать какую-то хэш-мультикарту или связать список всех событий в данный момент времени?

Я открыт для любых других предложений о том, как это сделать, или указателей на ресурсы. Время кодируется в своем собственном формате, представляющем секции: бары: биты: тики

спасибо! Иэн

1 Ответ

4 голосов
/ 21 декабря 2011

Ничто не может избавить вас от необходимости профилировать ваш код и убедиться в этом сами.

Сделать тип данных максимально простым для изменения, сохранить все модульное и параметризованное, а затем простовыполните несколько тестов.

Начните с std::multimap и std::unordered_multimap, со временем в качестве ключа.Оба должны иметь довольно хорошую производительность.Попробуйте также несколько разных распределителей.

...