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.

Published 12.9.2009