Tämä on ehkä hieman epäortodoksinen vertailu, mutta mittailin huvikseni Facebookin hiljattain julkaiseman Tornado 0.1:n sekä myöskin uusimman Ruby on Rails 2.3.4:n suorituskykyä.
Framework | Language | Server | Request/s |
Tornado 0.1 (git) | Python 2.6.2 | Nginx 0.6.35 | 1961.11 |
Ruby on Rails 2.3.4 | Ruby 1.9.1 | Apache 2.2.11/Passenger 2.2.5 | 421.94 |
Ruby on Rails 2.3.4 | Ruby 1.9.1 | Nginx 0.7.61/Passenger 2.2.5 | 470.47 |
Plain HTML serving | (none) | Nginx 0.7.61 | 6317.71 |
Mittaukset on tehty samalla koneella kuin tämä aiempi vertailu, mutta käyttiksenä oli nyt Ubuntu 9.04. Testiohjelmana "ab -n 100000 -c 25". Testattu sovellus oli yksinkertainen "hello world", eli tässä mitattiin lähinnä kattorajaa frameworkien suorituskyvyille. Mukana myös vertailun vuoksi staattisen HTML:n jakelu Nginxillä.
Tornado näyttäisi siis oikein suorituskykyiseltä, kun se konfiguroidaan ohjeiden mukaan. Ajoin testissä 4 rinnakkaista Tornado-prosessia (1 per CPU-core) ja niiden edessä Nginxiä. Muita kokemuksia kyseisestä frameworkista ja sen sopivuudesta web-sovelluskehitykseen ei vielä oikein ole.
Ruby on Rails ei myöskään ole ihan huonoimmasta päästä. Ruby 1.9:ssä on tiettävästi uusi tehokkaampi VM ja production-moodissa Rails pitää kaikki luokat cachetettuna muistissa. Nähdäkseni RoR yltää suurin piirtein samoihin tuloksiin kuin PHP:n nopeimmat MVC-frameworkit. Passenger puolestaan tekee RoR-sovellusten deployaamisesta varsin helppoa sekä Apachella että Nginxillä.
Pythoniin verrattuna Ruby kuitenkin vaikuttaa olevan konsistentisti aina vähintään puolet hitaampi. Djangolla sain aiemmin samalla koneella noin 1000 req/s ja Tornado vielä tuplasi sen.