Spíše z důvodu učení se, než kvůli faktickému testování něčeho, co asi ani nevypadá moc reálně, jsem si zkusil napsat stejný kód v několika jazycích. Konkrétně v NodeJS, Pyhonu a Go. Jak jde vidět vše jazyky používané pro psaní na backendu webových aplikací.
Zadání
Asi jednoduché a jasné: napsat stejný kód v růyných jazycích, něco se naučit a možná pak i porovnat nějaký performance. Ten stejný kód jsem omezil na načtení dat z MongoDB databáze, sečtení načtených dat, výpočet průměrné hodnoty z načtených dat a její zobrazení.
Data jsem si připravil v NodeJS jednoduchým skriptem, který vytvoří testovací data pro jednotlivé aplikace v daném jazyce.
Vytvoření databáze
NIc složitého:
![](https://pepa.holla.cz/wp-content/uploads/2019/01/create-mongodb-data-580x1024.png)
Výsledkem je collection v MongoDB c 1.000.000 záznamy, dokumenty, kde v kadém z nich je klíč value s nahédně vygenerovaným číslem v rozmezí od 1 do 100.
Vytvoření databáze:
![](https://pepa.holla.cz/wp-content/uploads/2019/01/Snímek-obrazovky-2019-01-20-v-11.22.23.jpg)
Samotné testování
Postupně jsem napsal ten stejný kód v růyných jazycích s podobnou myšlenkou, složitostí, bez ambice využívat jakékoliv optimalizační aspekty.
NodeJS
![](https://pepa.holla.cz/wp-content/uploads/2019/01/reading-nodejs-767x1024.png)
Rychlost pak takto:
![](https://pepa.holla.cz/wp-content/uploads/2019/01/Snímek-obrazovky-2019-01-20-v-11.55.51.jpg)
Poznámka k práci s výsledným polem: zkusil jsem jak for of
, tak i klasický for
cyklus, ale i funkcionální forEach
. Výsledek byl téměř identický. Použitý for of
se mi nejvíce líbil, pro svou jasnost a kompaktnost.
Python
![](https://pepa.holla.cz/wp-content/uploads/2019/01/reading-python-972x1024.png)
No a rychlost v Pythonu pak takto:
![](https://pepa.holla.cz/wp-content/uploads/2019/01/Snímek-obrazovky-2019-01-20-v-12.19.44.jpg)
Go
![](https://pepa.holla.cz/wp-content/uploads/2019/01/reading-golang-811x1024.png)
Rychlost vývpočtu v Go:
![](https://pepa.holla.cz/wp-content/uploads/2019/01/Snímek-obrazovky-2019-01-20-v-13.53.09.jpg)
Suma sumarum
Rychlost jedntolivých implementací stojí a padá na Mongo driveru a je v podstatě ve všech jazycích stejná. I když v NodeJS test dopadl nejlépe. Problém bych ale neviděl v daném jazyce, ale spíš v loaderu.
To potvrzuje ten fakt, že pokud jsem vybuildoval Go zdroják do binárky, pak jsem získal a pomohl jsem si o cca půl sekundy a Go tak skoro srovnalo krok s ostatními:
![](https://pepa.holla.cz/wp-content/uploads/2019/01/Snímek-obrazovky-2019-01-20-v-13.58.59.jpg)
Nicméně
Jak jsem uveld úplně ze začátku článku: psal jsem test, abych si vyzkoušel v růyných jazycích práci s MongoDB.
Co mě mile překvpilo, byla rychlost Pythonu. Čekal jsem, že bude výrazně pomalejší.
O to milejší překvapení, když se podíváte na pythonovský zdroják a porovnáte jej s ostatními jazyky…
A samozřejmě: určitě jsem neměl ambice testovat jazyky. Chtěl jsem získat nějaké nové zkušenosti…