di: Sandro Paganotti 28 Ottobre 2008
Dalla nascita di Rails ai giorni nostri sono emerse moltissime realtà che hanno fatto di questo framework (e quindi di Ruby) il loro portabandiera, basti pensare a siti come Twitter, Yellowpages e lo stesso Basecamp. Tutte queste applicazioni hanno però messo in evidenza un altro aspetto di questa tecnologia: le scarse performance della Virtual Machine.
Per ovviare a questo problema, sono venuti alla luce diversi progetti di Virtual Machines alternative, con l'obiettivo di migliorare quella esistente. In questo articolo mettiamo a confronto le diverse alternative specificando per ognuna di esse: lo stato di avanzamento, il livello di compatibilità con la VM originale, i pregi ed i difetti.
Sotto questo acronimo si nasconde la Virtual Machine originale, sviluppata ed evoluta da Matz fin dal 1993. A tutt'oggi la maggior parte delle applicazioni (Web o meno) scritte in Ruby sono eseguite su questa Virtual Machine. Inoltre è la macchina virtuale per la quale sono sono disponibili il maggior numero di gems.
Come accennato, la MRI è tristemente nota per le scarse performance, dovute ad una moltitudine di fattori, tra i quali spicca l'assenza di uno step intermedio tra la lettura e l'esecuzione del codice.
Questa VM non genera alcun tipo di bytecode, ma memorizza le informazioni in una struttura chiamata Abstract Syntax Tree che, se da un lato ben si presta alle potenzialità di metaprogrammazione di Ruby, dall'altro riduce drasticamente le prestazioni obbligando il programma ad effettuare ricerche, a volte anche complesse, soltanto per recuperare il valore di una variabile.
Altro aspetto che lascia perplessi è la sua incapacità nel gestire Threads a livello del sistema operativo. La MRI infatti utilizza green threads, cioè thread che risiedono all'interno della VM risultando in questo modo completamente invisibili al sistema operativo. Questa scelta implementativa da un lato garantisce la piena portabilità della MRI su diversi SO, dall'altro implica un notevole prestazionale, soprattutto nel caso in cui la macchina sulla quale si stia eseguendo l'applicazione sia multi-core o multi-processore (in questi casi infatti threads normali possono essere eseguiti contemporaneamente su core diversi, green threads no).
Tra gli aspetti positivi vanno invece annoverate le migliaia di gems nativamente sviluppate su questo interprete, cosi come, nel caso si volesse utilizzare Rails, la disponibilità di svariate architetture di produzione costruite su questa Virtual Machine.
Alla data di stesura di questo articolo MRI è disponibile nella versione 1.8.7 che si configura principalmente come una release-ponte tra la 1.8.6 e la 1.9.0 che però utilizzerà una nuova Virtual Machine.
Guida ActiveSupportUna panoramica sulle funzionalità più importanti di ActiveSupport:... |
Guida Ruby On Rails 2Scoprire le novità di Ruby on Rails 2, memorizzare i dati con... |
Guida Ruby e il WebUn percorso alla scoperta delle potenzialità offerte da Ruby nella... |
Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .
Iscriviti alla newsletter