Compilare velocemente i bisonti

misc40.jpg

Fabrice Bellard. Forse molti di voi lo ricorderanno per i film: QEMU a generic machine emulator and virtualizer” oppure FFMPEG the Open Source Multimedia System”. Altri ancora lo ricordano per TCC a tiny but complete ISOC99 C compiler”.

Conoscevo già tcc, ma ho voluto rispolverarlo per stressarlo un po. Per chi usa ubuntu è sufficiente dare il comando:

$ sudo apt-get install tcc

Si tratta a prima vista di un compilatore C, ma se diamo in pasto al compilatore il classico Hello world:

#include <stdio.h>
main()
{
	printf("Ciao mondo!\n"); 
}

 produce un eseguibile che è più piccolo (ma funzionante!) di quello prodotto col classico gcc (potete anche eseguire strip sul binario…sarà sempre più piccolo).

Possiamo, inoltre, usare tcc come interprete di script scritti in C. Se aggiungiamo in testa al listato precedente la riga:

#!/usr/bin/tcc -run

possiamo direttamente “eseguire” un sorgente C (ricordate i permessi di esecuzione)! Può essere, quindi, utile per scrivere CGI in C senza necessità di ricompilare ogni volta il codice. Fantastico, no?!

Per stressare un po’ tcc ho cercato di fargli compilare un bisonte! Forse molti di voi non ne conoscono l’esistenza (chi ha studiato Linguaggi sì!) ma fra i prodotti GNU c’è anche bison (un generatore di parser). Per compilare bison con tcc basta dare il comando:

 $ CC=tcc ./configure && make

L’eseguibile prodotto è più piccolo, ma il dato che sorprende è il tempo necessario per la compilazione:

gcc: 15 secondi configure + 17 secondi make = totale 32 secondi

tcc: 10 secondi configure + 2 secondi make = totale 12 secondi

Non resta altro che provarlo…se compila i bisonti figuriamoci gatti (cat) o cani (dog)!

6 pensieri su “Compilare velocemente i bisonti

  1. Forte! Ne avevo sentito parlare tempo fa, ma la voglia di provarlo mi è venuta leggendo questo post.
    Complimenti per il sito e per i contenuti, sei un tipo veramente “spesso”!

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...