2010-11-19 21 views
6

Attualmente sto tentando di scrivere un grafico di scena 2D in C, e ho bisogno di decidere su un modo di memorizzare i nodi figlio. Mi aspetto molte letture e poche scritture, quindi una lista concatenata è fuori questione a causa della scarsa localizzazione territoriale di riferimento e l'uso di realloc ogni volta per aggiungere un nodo figlio probabilmente frammenterebbe la lista libera in oblio. Un pool allocator sembra essere la soluzione migliore, ma non riesco a trovare alcuna implementazione da utilizzare. Qualcuno sa di un allocatore che gestirà in modo efficiente allocazioni e allocazioni casuali di poche centinaia di piccole struct s, o forse uno schema di allocazione migliore?Allocatore pool C efficiente?

risposta

4

mi sto preparando a distribuire TLSF come allocatore in tempo reale. Non ho ancora avuto la possibilità di delineare le sue prestazioni, ma sembra funzionare, e il license ha ragione.

Secondo i loro documenti, le sue operazioni eseguono "un massimo di 168 istruzioni del processore in un'architettura x86". Si presenta come un singolo file .C, che è stato compilato senza modifiche sul mio sistema.

+0

il link è rotto – CAFxX

+0

@CAFxX - Vergogna. Google mi trova alcuni siti alternativi, ma nessuno sembra essere ufficiale. Spero che cambierà. –

+0

Yay! Grazie per la correzione, @Electro. Dandoti un voto semi-casuale. Segna un'altra vittoria per la conoscenza di massa. –

2

Dai un'occhiata a halloc, potrebbe essere di aiuto.

http://swapped.cc/halloc/

+0

'halloc' sembra interessante, ma funziona ancora su' malloc', quindi il problema della frammentazione rimane, anche se suppongo che potrebbe rivelarsi utile come punto di partenza per un allocatore di pool. – Electro

Problemi correlati