[...] argumenta que los operadores de propósito general (nuevo y eliminar) funcionan mal para asignar objetos pequeños.
Depende de la plataforma. P.ej. en Linux una vez evalué mi árbol AVL de cosecha propia con gestión de memoria estática frente a std :: map de GNU, que es un árbol rojo-negro y una gestión de memoria totalmente dinámica. Para mi sorpresa, std :: map a veces superó mi propia implementación altamente eficiente. Y std :: map hace una cantidad peligrosa de pequeñas asignaciones de memoria.
En mi programa hay muchos objetos creados y destruidos en la tienda gratuita.
La preocupación por la administración de la memoria es válida. En cierto sentido, siempre debe intentar reutilizar los recursos existentes si es posible o evitar la creación de copias temporales.
Eso es si la eficiencia/rendimiento de la CPU que busca. Si el código se ejecuta raramente, entonces no tiene sentido molestarse.
Estos objetos miden más de 8000 bytes. ¿Qué tamaño se considera pequeño? ¿Son 8000 bytes pequeños o grandes cuando se trata de asignación de memoria en C++?
Esta es una pregunta sin sentido. Si su programa necesita un objeto que tome 8K, entonces su programa lo necesita. Período.
Debería comenzar a preocuparse solo si recibe quejas de que el software requiere demasiada RAM o el perfilador apunta al cuello de botella de rendimiento en la gestión de la memoria. De lo contrario, la gestión de memoria moderna es relativamente rápida y robusta.
P.S. Personalmente, consideraría 8K como un tamaño promedio de asignación de memoria. No es pequeño, no es grande. Pero ya estoy acostumbrado a trabajar con programas que, por capricho, asignan 10 + GB en montón. Si el conjunto de datos debe residir en la RAM y tiene un tamaño de 10 GB, entonces la aplicación no tiene más remedio que intentar cargarlo.
Depende de la implementación. – kennytm
¿Los objetos miden individualmente 8000 bytes o acumulativamente? Mientras @KennyTM dijo que depende de la implementación, a 8000 bytes por objeto no hay muchas implementaciones del mundo real donde ese objeto se considere pequeño –
@Jared P, cada objeto mide más de 8000 bytes. Mi programa debería ejecutarse de manera muy eficiente en los sistemas de servidor de Windows y Linux. –