Estoy jugando con cierto algoritmo de almacenamiento en caché, lo cual es un tanto desafiante. Básicamente, necesita asignar muchos objetos pequeños (matrices dobles, de 1 a 256 elementos), con objetos accesibles a través del valor asignado, map[key] = array
. el tiempo para la matriz inicializada puede ser bastante grande, generalmente más de 10 mil ciclos de CPU.estrategia para asignar/liberar lotes de objetos pequeños
Por lotes me refiero a alrededor de gigabytes en total. Es posible que sea necesario hacer estallar/empujar objetos según sea necesario, generalmente en lugares aleatorios, un objeto a la vez. la vida útil de un objeto es generalmente larga, de minutos o más, sin embargo, el objeto puede estar sujeto a asignación/desasignación varias veces durante la duración del programa.
¿Cuál sería una buena estrategia para evitar la fragmentación de la memoria, mientras se mantiene una asignación razonable de la velocidad de desasignación?
Estoy usando C++, entonces puedo usar new y malloc. Gracias.
Sé que hay preguntas similares en el sitio web, Efficiently allocating many short-lived small objects, son algo diferentes, la seguridad del hilo no es un problema inmediato para mí.
mi plataforma de desarrollo es Intel Xeon, sistema operativo Linux. Idealmente, me gustaría trabajar en PPC Linux también, pero no es lo más importante para mí.
¿Qué es la plataforma? Quiero decir, sistema operativo, arquitectura de CPU, compilador, etc. Estos pueden afectar sustancialmente la respuesta. –