Go vs NodeJS vs ExpressJS vs Python

Jen tak ze zvědavosti jsem si v rychle napsal impelmentaci vlastního HTTP serveru v čístém NodeJS (core http modul), pak v NodeJS pomocí ExpressJS frameworku, čístém Golangu a nakonec v Python 3.

V žádném z nich jsem nevyužil žédné možnosti jakkoliv paralelizovat, a proto ve všech serverech se jednoalo i single thread server. Viz následující zdrojáky:

NodeJS

ExpressJS

Golang

Python 3

A výsledek testu?

Tušíl jsem, že Go bude nejrychlejší, a také bylo. I když ne o moc.

Potěšilo mě, že ExpressJS se v podstatě držel stejných výsledků jako čistý NodeJS, protože když si uvědomím co vše mi ExpressJS nabízí a měl bych jej ručně psát, tak to se mi opravdu nechce.

Dalšim plusovým bodem pro ExpressJS je to, že to jak těsně se držel NodeJS mi bere performance důvod dívat se po nějaké jiné knihovně, protože žádná nebude o moc rychlejší.

To že bude Python nejpomalejší jsem čekal. Opět jsem využíval přímo interního balíčku, který se nicméně dá nahradit za multithread a nebo dokonce za jiné, externí implementace. Těm se budu věnovat později a zvlášť. Nicméně tohle opravdu není doména Pythonu a vůbec mu to nemám za zlé.

ConcurencyNodeJSExpressJSGOPython
16755629967224175
21103510460105295919
101369512579162145924
201359612881169655826
401342013094166560
1001334012091162520
2001273411137162500
4001151211871141520

Všechna měření jsou jen povrchni, průměroval jsem jen z několika pokusů, nicméně výsledky budou plus mínus sedět…

Co dál?

V příštím testu chci paralelizovat. V rámci NodeJS postavím server na clusteru v Go využiju goroutiny.