¿Debo preferir la serialización binaria sobre la serialización de texto/texto si el rendimiento es un problema?Aumento del rendimiento de serialización: formato de texto vs. binario
¿Alguien lo ha probado en una gran cantidad de datos?
¿Debo preferir la serialización binaria sobre la serialización de texto/texto si el rendimiento es un problema?Aumento del rendimiento de serialización: formato de texto vs. binario
¿Alguien lo ha probado en una gran cantidad de datos?
Solía boost.serialization para almacenar las matrices y vectores que representan las tablas de búsqueda y algunos metadatos (cadenas) con un tamaño de memoria de alrededor de 200MByte. IIRC para cargar desde el disco en la memoria, tomó 3 minutos para el archivo de texto en lugar de 4 segundos utilizando el archivo binario en WinXP.
Suena 3 minutos ... inexplicablemente lento. Esos no eran tipos de POD :) – sehe
le sugiero que busque en protobuf - Protocol Buffers si el rendimiento es un problema
Bench marcó un problema relacionado con la carga de una clase grande que contiene lotes (miles) de clases archivadas anidadas.
Para cambiar el formato, archivo utilización arroyos
boost::archive::binary_oarchive
boost::archive::binary_iarchive
en lugar de
boost::archive::text_oarchive
boost::archive::text_iarchive
El código para cargar el archivo (binario) se parece a:
std::ifstream ifs("filename", std::ios::binary);
boost::archive::binary_iarchive input_archive(ifs);
Class* p_object;
input_archive >> p_object;
Los archivos y WallTimes para una compilación optimizada de gcc del fragmento de código anterior son:
Esto es de un disco de estado sólido, sin ninguna compresión de flujo.
Por lo tanto, la ganancia de velocidad es mayor de lo que sugeriría el tamaño del archivo, y obtienes una bonificación adicional mediante el uso de binarios.
Tema interesante. Lea esto: http://stackoverflow.com/questions/4558382/boostserialization-high-memory-consumption-during-serialization –