es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo reducir el tamaño del ejecutable?

Cuando compilo este código usando la librería {fmt}, el tamaño del ejecutable se vuelve de 255 KiB, mientras que al usar solo el encabezado iostream se vuelve de 65 KiB (usando GCC v11.2).

time_measure.cpp

include <iostream>

include "core.h"

include <string_view>

int main( )
{
    // std::cout << std::string_view( "¡Oh, hola!" );
    fmt::print( "{}", std::string_view( "¡Oh, hola!" ) );

return 0;
}
<code>
Aquí está mi comando de compilación:
</code>
g++ -std=c++20 -Wall -O3 -DNDEBUG time_measure.cpp -I include format.cc -o runtime_measure.exe

¿No se supone que la biblioteca {fmt} debería ser liviana en comparación con iostream? ¿O tal vez estoy haciendo algo mal?

Editar: Al agregar -s al comando para eliminar toda la tabla de símbolos y la información de reubicación del ejecutable, se vuelve de 156 KiB. Pero aún ~2,5 veces más que la versión de iostream.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La biblioteca {fmt} está diseñada para ser más rápida y eficiente que iostream para formatear la salida de texto en C++. Sin embargo, el tamaño ejecutable en este ejemplo es más grande al usar la biblioteca {fmt} en comparación con solo usar el encabezado iostream.

    Puede haber varias razones para esta discrepancia en el tamaño ejecutable. Una posibilidad es que la biblioteca {fmt} esté agregando código adicional para soportar sus características, lo que puede aumentar el tamaño del ejecutable. Otra posibilidad es que la configuración de optimización utilizada en el comando de compilación pueda estar afectando el tamaño del ejecutable.

    Se necesitaría una investigación adicional para determinar la causa específica de la diferencia de tamaño. Sin embargo, cabe destacar que la diferencia de tamaño no necesariamente indica una diferencia de rendimiento entre los dos métodos de formateo de salida. También es importante considerar factores como la facilidad de uso y mantenibilidad al elegir qué biblioteca o método usar para formatear la salida.

Comments are closed.