¿Hay alguna implicación en el rendimiento al incluir cada encabezado?

¿Hay alguna implicación en el rendimiento al incluir cada encabezado?


Digamos que quiero usar hex() función. Sé que está definido en <ios> encabezado y también sé que está incluido en <iostream> encabezamiento. La diferencia es que en <iostream> hay muchas más funciones y otras cosas que no necesito.


Desde el punto de vista del rendimiento, ¿debería preocuparme por incluir/definir menos funciones, clases, etc. que más?


Respuestas:



  • No hay impacto en el rendimiento del tiempo de ejecución.

  • Sin embargo, podría haber un tiempo de compilación excesivo si se incluyen toneladas de encabezados innecesarios.

  • Además, cuando se hace esto, puede crear recompilaciones innecesarias si, por ejemplo, se cambia un encabezado pero un archivo que no lo usa lo incluye.


En proyectos pequeños (con encabezados pequeños incluidos), esto no importa. A medida que un proyecto crece, es posible que lo haga.


Algunas respuestas de código


//local header -- most dependent on other headers #include <project/impl.hpp>
//Third party library headers -- moderately dependent on other headers #include <boost/optional.hpp>
//standard C++ header -- least dependent on other header #include <string>
#include <math.h>
char *erfc(char *a, char *b);