El rendimiento del paquete jq de Ubuntu aumentó 1.9 veces al reconstruir

Se han publicado los resultados de una evaluación del impacto en el rendimiento de la reconstrucción de paquetes para Ubuntu con diferentes opciones e implementaciones de funciones de asignación de memoria. El experimentador logró aumentar el rendimiento del paquete jq con herramientas para procesar datos en formato JSON en un 90% (1.9 veces) simplemente reconstruyéndolo desde el mismo paquete con el código fuente, sin realizar cambios en el código en sí. El rendimiento se evaluó midiendo el tiempo de ejecución de una consulta de filtro típica sobre 500 MB de datos GeoJSON.

Resultados del experimento:

  • La versión compilada en GCC a partir del mismo código fuente con indicadores predeterminados resultó ser entre un 2 y un 4 % más rápida que el paquete binario de Ubuntu.
  • La reconstrucción en Clang 18 con el nivel de optimización "-O3", habilitando las optimizaciones de tiempo de enlace ("-flto") y deshabilitando la información de depuración ("-DNDEBUG") resultó en una aceleración del 20%.
  • La reconstrucción con el sistema de asignación de memoria TCMalloc (agregando "-L/usr/lib/x86_64-linux-gnu -ltcmalloc_minimal" a LDFLAGS) resultó en una aceleración del 40%.
  • Reemplazar las funciones malloc con los sistemas de asignación de memoria tcmalloc, jemalloc y mimalloc a través de "LD_PRELOAD=/usr/lib/x86_64-linux-gnu/lib….so" resultó en mejoras de rendimiento del 27%, 29% y 44%. Al ejecutar con mimalloc, que mostró una aceleración del 44 %, se configuró la variable de entorno "MIMALLOC_LARGE_OS_PAGES=1".
  • La reconstrucción del paquete con mimalloc en LDFLAGS en lugar de vincularlo a través de LD_PRELOAD resultó en una aceleración del 90 % en la finalización de la prueba. Otra prueba de procesamiento de 2.2 GB de datos JSON en 13000 XNUMX archivos también mostró un aumento del rendimiento de aproximadamente el doble.

Fuente: opennet.ru

Añadir un comentario