2010-11-19 9 views
6

Actualmente estoy intentando escribir un gráfico de escena 2D en C, y tengo que decidir sobre una forma de almacenar los nodos secundarios. Estoy esperando muchas lecturas y pocas escrituras, por lo que una lista vinculada está fuera de cuestión debido a la mala ubicación espacial de referencia, y usar realloc cada vez para agregar un nodo secundario probablemente fragmentaría la lista libre en el olvido. Un asignador de grupo parece ser la mejor solución, pero parece que no puedo encontrar ninguna implementación para usar. ¿Alguien sabe de un asignador que manejaría de manera eficiente las asignaciones y desasignaciones aleatorias de unos pocos cientos de pequeños struct, o quizás un mejor esquema de asignación?Efficient C pool allocator?

Respuesta

4

estoy preparando para desplegar TLSF como asignador de tiempo real. Todavía no he tenido la oportunidad de perfilar su rendimiento, pero parece funcionar, y el license es correcto.

Según sus documentos, sus operaciones ejecutan "un máximo de 168 instrucciones de procesador en una arquitectura x86". Se presenta como un único archivo .c, que se compiló sin modificaciones en mi sistema.

+0

el enlace está roto – CAFxX

+0

@CAFxX - Shame. Google me encuentra algunos sitios alternativos, pero ninguno parece ser oficial. Espero que eso cambie. –

+0

¡Yay! Gracias por la corrección, @Electro. Te da un voto alternativo semi aleatorio. Marque otra victoria para el conocimiento de fuentes múltiples. –

2

Eche un vistazo a halloc, podría ser de alguna ayuda.

http://swapped.cc/halloc/

+0

'halloc' se ve interesante, pero todavía funciona en la parte superior de' malloc', por lo que el problema de la fragmentación permanece, aunque supongo que podría ser útil como punto de partida para un asignador de agrupaciones. – Electro