Supongamos que hay dos hilos que se comunican enviando mensajes de datos de forma asíncrona entre sí. Cada hilo tiene algún tipo de cola de mensajes.
Mi pregunta es de muy bajo nivel: ¿Cuál puede ser la forma más eficiente de administrar la memoria? Se me ocurren varias soluciones:
- El remitente crea el objeto a través de
new
. Receptor de llamadasdelete
. - Agrupación de memoria (para transferir la memoria al remitente)
- Recolección de basura (p. Ej., Boehm GC)
- (si los objetos son lo suficientemente pequeños) copie por valor para evitar la asignación del montón por completo
1) es la solución más obvia, así que la usaré para un prototipo. Lo más probable es que ya sea lo suficientemente bueno. Pero independientemente de mi problema específico, me pregunto qué técnica es más prometedora si está optimizando el rendimiento.
Esperaría que la agrupación sea teóricamente la mejor, especialmente porque puede usar un conocimiento adicional sobre el flujo de información entre los hilos. Sin embargo, me temo que también es lo más difícil de hacer bien. Mucha afinación ... :-(
La recolección de basura debería ser bastante fácil de agregar después (después de la solución 1), y esperaría que funcione muy bien. Entonces, supongo que es la solución más práctica si 1) resulta ser demasiado ineficiente.
Si los objetos son pequeños y simples, la copia por valor podría ser la más rápida. Sin embargo, me temo que impone limitaciones innecesarias en la implementación de los mensajes compatibles, por lo que quiero evitarlo.