Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Soluzioni ufficiali e non per un'accelerazione di boot delle applicazioni RoR
Scritto da Luca Domenichini il 16-06-2011 ore 09:29
Seminario Intel
Per il team che sviluppa un linguaggio di programmazione, il feedback degli utenti è come un faro per la nave alla deriva; rappresenta infatti il punto di riferimento più importante per la segnalazione di difetti e punti deboli. Nel caso di Ruby però, ciò che è avvenuto di clamoroso non è la segnalazione di un bug, ma la sua tempestiva soluzione a opera di un programmatore esterno.

Dalla lontana Australia, il poco più che ventenne Xavier Shay si è da tempo fatto conoscere nella comunità Ruby per i suoi contributi al framework Rails, per la partecipazione a workshop tecnici, numerosi blog, articoli per riviste, progetti commerciali e presentazioni. Tra le sue segnalazioni, ha condiviso con altri la presenza di un fastidioso rallentamento nel boot delle applicazioni Rails 3, quando utilizzate su Ruby 1.9.2.

Non accontentandosi però di aver evidenziato il difetto, Xavier ha quindi occupato un po' del suo tempo e delle sua preziosa esperienza per mettere insieme una soluzione. Il risultato, condiviso con tutta la community, è quasi strabiliante: i tempi di caricamento diminuiscono del 36%! In poche parole, l'idea di Xavier è quella di modificare l'algoritmo principale che si occupa di caricare i file durante il boot, giudicandolo — evidentemente con ragione — poco efficiente.

L'algoritmo proposto al team di lavoro di Ruby, il quale non riassume tutta la soluzione di Xavier, ma rappresenta una delle parti più notabili, oltre a essere più corto (con 5 righe invece di 7), fa registrare prestazioni (benchmark effettuato calcolando fino a 2000 file da caricare durante il boot) che tornano paragonabili a quelle della vecchia versione 1.8.7, in alcuni casi addirittura migliori (in caso di un'applicazione Rails vuota).

Xavier ha rilasciato una sua patch, che mette in pratica la sua soluzione, già provata e apprezzata da molte persone. Quattro giorni dopo questo evento, la risposta del Ruby core team è netta e in direzione diversa da quella proposta dall'australiano: dal Giappone proviene infatti una modifica di 26 linee al file load.c, meno pesante della patch di Xavier, ma certamente più addentro i meccanismi di controllo e ottimizzazione di tutto il sistema. I primi test indicano performance analoghe, e non superiori, a quelle ottenute da Xavier Shay, cosa per la quale il programmatore dell'altro emisfero può certamente gioire ed essere fiero di sé.
Precedente: La soluzione Microsoft per semplificare la creazione di applicazioni parallele in C++
Successiva: Alcuni suggerimenti per programmare con WPF
Copyright Programmazione.it™ 1999-2014. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.223 secondi.