Zrychlujeme!

29. 4. 2015

Kdo by rád neporovnával benchmarky PHP frameworků... Dnes jsem zavadil o Laravel Lumen. Ideální pro tvorbu API, jak píše autor Taylor Otwell. Zároveň uvádí, že Lumen zvládne kolem "1900 requests per second". Jistě, týká se to out-of-box frameworku, ale i tak je to pozoruhodné, nebo spíš zajímavé číslo. Pojďme si vzít stopky do ruky sami.

Ahoj světe, Nette

Začneme, jak jinak, Nette Sandboxem. Standardní composer create-project nette/sandbox odpovídá na cca 108 requestů/s. Nette Microframework si s odpovědí pospíší - čas requestu je přibližně poloviční. Abychom však porovnávali s Lumenem čísla ve stejném prostředí, musíme stopnout čas i jemu na našem železe. Stejně jako dosud testované frameworky i tento pustíme bez jakýchkoliv APC a jiných cachí. Podívejme, Lumen odpoví po cca 13 ms. Počet requestů za sekundu vyjde na 763. "Velký" Laravel je na tom přitom znatelně hůře než Nette Sandbox - 35 requestů/s s průměrným časem odezvy 284 ms.

Na čem to všechno "jedu"

PHP 5.6, Vagrant 1.7.2, NGINX 1.6.2, Virtualbox 4.3, 2GB RAM. Na Macbooku (mid-2012) běží ještě další servery a nějaká multimédia, klasika

HHVM

Pokud za NGINX ještě zřetězíme HHVM, Sandbox Nette zvládne přibližně 160 requestů/s, průměrný request 63ms, micro verze je víe jak dvojnásobně rychlejší. Lumen se vyhoupne na zhruba 1050 requestů/s s průměrnou dobou 10ms.

Edit: Pro srovnání jsem přidal ještě framework Phalcon. Srovnávat Phalcon s/bez HHVM nemá smysl, ve výsledcích je tedy zahrnut pouze benchmark bez HHVM..

Kompletní výsledky

Bez HHVM:
	Laravel Lumen:
		Requests per second:    762.79
		Time per request:       13.110 [ms]

	Laravel:
		Requests per second:    35.18
		Time per request:       284.238 [ms]

	Nette Sandbox:
		Requests per second:    108.78
		Time per request:       91.929 [ms]

	Nette Micro:
		Requests per second:    219.15
		Time per request:       45.630 [ms]

	Phalcon:
		Requests per second:    1452.03
		Time per request:       6.887 [ms]

HHVM:
	Laravel Lumen:
		Requests per second:    1044.99
		Time per request:       9.569 [ms]

	Laravel
		Requests per second:    57.55
		Time per request:       173.762 [ms]

	Nette Sandbox:
		Requests per second:    158.25
		Time per request:       63.191 [ms]

	Nette Micro:
		Requests per second:    367.35
		Time per request:       27.222 [ms]


Komentáře (8)

Anonym #24 9. 11. 2015 02:05
A jak si na tom stojí oproti HHVM Phalcon?
Pavel Janda #25 20. 11. 2015 17:22
Přidal jsem ho do srovnání.
Petr #28 10. 12. 2015 11:24
Chci se zeptat proč jsi si nevybral třeba Phalcon? Díky za odpověď.
Pavel Janda #29 10. 12. 2015 11:38
Neměl jsem dosud možnost napsat ve Phalconu pořádnou aplikaci, takže bohužel nemohu srovnávat s ostatními frameworky v ničem jiném, než co už jsem napsal - rychlost.
Na druhou stranu, další důvody jsou:
1, Potřebuji rychle vědět, co framework opravdu dělá. Já osobně chci zkoumat zdrojové kódy frameworků. Když mám ve vendoru framework, tak mi jakékoliv IDE všechno najde a ukáže. Phalcon těžko.
2, V ČR je dost velká uživatelská základna Nette fw. Dost velká v porovnání s ostatními fw.
3, Ta rychlost mě zas tolik netíží. Kombinací PHP7, nginxu, redisu a dalších zajímavých technologií se dá docílit opravdu rychlého běhu aplikace. Pak už takový rozdíl nebude.
4, Mám rád Nettí DIC.
Petr Bugyik #31 2. 2. 2016 00:05
Zkus to v https://github.com/restify/node-restify a zapomenes na psani API v PHP :)
Pavel Janda #32 2. 2. 2016 12:41
Díky, prozkoumám to. Tak v rychlosti se mi to docela líbí.
Šaman #33 23. 2. 2016 00:28
Pěkné. Jen mě napoprvé zarazilo:
"Nette Microframework si s odpovědí pospíší - čas requestu je přibližně dvojnásobný."
Buď je čas poloviční, nebo je dvojnásobná rychlost. Takhle jsem chvíli nechápal proč používat mikroframework, když je pomalejší.
Pavel Janda #34 23. 2. 2016 07:30
Ajo, děkuju, opraveno.

Přidat komentář

Tento web používá k poskytování služeb a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. V pořádku Další informace