LINUCA
LINUCA - Asociación de Usuarios GNU/Linux en Cantabria
CONTENIDOS
. La Asociación
. ¡ Apúntate a socio !
. Fotos
. Los más leídos
. Autores [Actividad]
. Últimos Comentarios
. ¡Todos los titulares!
. Guía de Estilo
. Cómo publicar en Linuca
. Links cortos
. Lista de Correo
   [Mensajes antiguos]
   [Etiqueta en la Lista]
. Todas las Listas
. ¿Sugerencias?
. ¡Sindícanos!
Gràcies Bulma!
Esta página usa el código fuente de Bulma :-)
Busquedas

Ultimos kernels
(22/09/2014 18:33:07)
Debian
Última actualización
stable: 12/07/2014
testing: 22/09/2014
unstable: 22/09/2014
ccache:Compilando todavia mas deprisa (5485 lecturas)
Por JuanJo
jjosegutie (http://www.iteisa.com)
Creado el 29/11/2002 00:05 modificado el 29/11/2002 00:05

Siguiendo nuestra serie de "Compila en menos tiempo(tm)" pues me he decidido (por fin) a sacar la segunda entrega que es esta, el ccache. Esta es posible que interese a más gente porque si bien la otra(distcc) solo se aplicaba si tenias más de un ordenador y una red pues esta se aplica a todos los ordenadores con gcc(incluido freebsd y otros unix)

Pagina1/1

  • ¿Que es ccache?(versión ultracorta)
    Es un programa que hace que tardes MUCHO menos en compilar un programa

  • ¿Que es ccache?(versión larga)
    Es una cache para el compilador.
    Esto es, basicamente un programa que interfiere entre tu mismo y el compilador gcc. La idea es que tu cuando compilas se prepocesa el codigo C y se añaden includes se resuelven defines y demás. Es decir tomemos este código:
    ---uno.h---
    void imprimeHola()
    {
            printf("Hola LINUCA\n");
    }
    
    ---uno.cpp---
    
    #include "uno.h"
    
    #define VECES 3
    
    void main()
    {
            for (int i=0;i<VECES;i++)
                    imprimeHola();
    }
    

    tras el preprocesado queda esto:

    ---uno.i---
    void imprimeHola()
    {       
            printf("Hola LINUCA\n");
    }
    
    void main()
    {
            for (int i=0;i<3;i++)
                    imprimeHola();
    }
    
    vamos que se queda con un solo fichero fuente. Si ahora hacemos que la primera vez que se compile esto se guarde en una base de datos una suma de comprobacion del fichero original(p.ej. un md5sum) y el resultado de la compilación junto a otros parametros del compilador(optimizaciones y eso) y hacemos que las demás veces en vez de compilarse(que tarda mucho, sobre todo el gcc3) se coja directamente de esa base de datos pues habremos conseguido reducir el tiempo de compilacián.

  • ¿Como se instala?
    Se baja este archivo o se va a aqui y se busca la versión más nueva para bajar luego se hace esto:
    ps /home/ps/src # tar xvfz ccache-1.9.tar.gz
    ....
    ps /home/ps/src # cd ccache-1.9
    ps /home/ps/src/ccache-1.9 # ./configure && make && make install
    
    y con eso estará instalado
    Si usas gentoo la cosa es bastante más sencilla
    root /home/ps # emerge ccache
    


  • ¿Como se configura?
    Para configurarlo se dice:
    ccache -M 2G (para tener dos gigas de cache aunque se puede tener menos si se quiere)

  • ¿Como se usa?
    Al compilar en vez de usar el gcc usad el comando ccache gcc. En Gentoo(rlz) no hace falta hacer nada el portage lo usa si lo tienes instalado( y claro siendo un programa de 33k quien se resiste? :-D)
  • Estadisticas:
    Como prueba se compiló el aewm un gestor de ventanas pequeñuco y estos son los reveladores resultados:
    ccache(1ª compilación):
    real    1m20.719s
    user    0m26.840s
    sys     0m4.620s
    
    ccache(2ª compilación):
    real    0m14.696s
    user    0m9.230s
    sys     0m3.070s
    
    es decir hemos reducido el tiempo de compilación en un 85%.

  • Ventajas
    • Reduces el tiempo de compilación una burrada
    • Está especialmente indicado para por ejemplo si compilas el kernel a menudo, donde por ejemplo cambian pocos ficheros de versión en versión o si eres un desarrollador y estás en la mitica fase de compila-prueba :-D


  • Desventajas:
    • Ocupa 33k(dios, mi disco duro de 80Gb se va a resentir)
    • Solo vale si compilas más de una vez los programas, es decir si lo que haces es compilar el openoffice fijo que no lo haces dos veces por placer en cuyo caso no vas a notar mejora

Imprimir
Version para
imprimir

Imprimir
Version
PDF
Comentarios
No hay comentarios a este articulo.
Calificacion
***0
Votos: 16
Relacionados
. Compilación e instalación del kernel
. distcc:Compilando en red
SECCIONES
Artículo
Truco
Noticias
Breve
Enlace
Linuca
Libros
Tira ECOL
Tira Ecol
Modificado: 3/3/2006 17:03:23 | Tiempo Total: 1.151 segs | Kernel: Linux - x86_64 - 2.6.18-xen | Last Boot: 03/12/2010 01:21 CET
Powered By WEB-Bulma   Apache   Mysql   PHP   Gimp