¿Alguien sabe alguna implementación de un caché de objetos con plantillas?Caché genérica de objetos
- se utiliza una clave para encontrar el objeto (el mismo que en std :: mapa <>)
- especifica un número máximo de objetos que pueden estar en el caché al mismo tiempo
- Hay instalaciones para crear un objeto que no se encuentra en la caché
- Hay instalaciones para saber cuando un objeto se descarta de la caché
Por ejemplo:
typedef cache<int, MyObj*> MyCache;
MyCache oCache;
oCache.SetSize(1);
oCache.Insert(make_pair(1, new MyObj());
oCache.Touch(1);
MyObj* oldObj = oCache.Delete(1);
...
Puede ser tan simple como un caché LRU o MRU.
¡Cualquier sugerencia es bienvenida!
Nic
¿Qué ocurre si la (re) creación de un objeto es mucho más lenta que una búsqueda de clave-> valor? No todos los constructores son "principalmente inicializaciones de memoria". – moswald
Entiendo por qué el voto a favor: no estoy dando una respuesta. Así que estoy tratando de obtener uno: Hoy en día, la MMU marcará la memoria que contiene los objetos en caché no usados recientemente como de bajo uso, por lo tanto, candidato a enviarse a un archivo de página en el disco duro ... suponiendo que haya un HDD. Por lo tanto, volver a buscar un objeto en caché faltante de HDD, código de ejecución iso para volver a crear el objeto, sería "correcto" en un conjunto de circunstancias muy engorroso. @Nicolas: ¿cuáles son sus circunstancias concretas? – jpinto3912
Estoy pensando en mezclar el caché de la CPU y otro tipo de caché de datos. OP buscó caché de datos, no CPU. – Dolanor