Desde ayer he estado probando a compilar en paralelo usando
distcc.
¿De que va todo eso? Pues consiste en usar otros ordenadores en red, para reducir el tiempo de compilado. Al compilar un programa (sobretodo los grandes con muchas librerías), tu ordenador local compila parte del programa, y otros ordenadores en la red, compilan otras partes. Se reparten el trabajo de forma similar (aunque no tan eficiente) a un ordenador multi-procesador. En muchos sitios, crean granjas de ordenadores (o xBox, que es lo único para lo que sirve esa consola

) para igualar la potencia de un super-ordenador, mucho mas caro.

Yo uso
Gentoo, y la gracia de esta distro es compilar todo lo que instalas (a pesar de que también existan binarios, como en otras distros). El sistema de instalación de Gentoo permite integrar automáticamente utilidades como
ccache o distcc, para reducir el tiempo de instalación de programas.
Usando la gui gráfica de distcc, he capturado como se distribuye la compilación de
amarok entre 2 ordenadores. Por desgracia, los resultados no son demasiado espectaculares. Por ejemplo: al instalar amarok-1.3_beta2 con distcc, tardo 11 minutos, sin distcc tardo 15 minutos. Existe una reducción de tiempo en algunas compilaciones, pero no siempre resulta significativa (con amarok tardo 3/4 del tiempo normal en compilar).
Calculo que haciendo uso de mas ordenadores "tal vez" podría reducir mucho más el tiempo, sin embargo, no mucho ya que hay muchas partes del compilado que requieren de otras para compilarse. Estas partes secuenciales no ganan nada de la compilación en paralelo e incluso pueden verse afectadas negativamente.
Comentarios