Эффективный распределитель пула C? - PullRequest
6 голосов
/ 19 ноября 2010

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

Ответы [ 2 ]

4 голосов
/ 19 ноября 2010

Я готовлюсь к развертыванию TLSF в качестве распределителя в реальном времени. У меня еще не было возможности профилировать его производительность, но, похоже, он работает, и лицензия верна.

Согласно их документам, его операции выполняют «максимум 168 инструкций процессора в архитектуре x86». Он поставляется в виде одного файла .c, который скомпилирован без изменений в моей системе.

2 голосов
/ 19 ноября 2010

Взгляните на halloc, это может помочь.

http://swapped.cc/halloc/

...