Hlavní navigace

Vlákno názorů ke článku CouchDB a skriptování v C++ od kutr - Nezapočítání času kompilace mi připadá jako zásadní problém....

  • 30. 4. 2017 11:29

    kutr (neregistrovaný) 86.61.140.---

    Nezapočítání času kompilace mi připadá jako zásadní problém. Nevím jaký JS engine couchdb používá, ale spousta js enginů optimalizují také, takže rychlost běhu programu se bude taky zlepšovat pro více záznamů (provede se JIT kompilace a pak už se nic neinterpretuje). Já bych k tomu byl hodně skeptický, dokud neuvidím nějaké komplexnější testy. Zatím mi to spíš připadá jako předčasná optimalizace. Navíc nechápu, proč nepoužít rovnou erlang, když už to autor zmiňuje jako nejlepší možnost z hlediska výkonu.

  • 30. 4. 2017 17:17

    Ondřej Novák

    Dekuji za nazor a za otazky.

    Nejprve proc nepouzit Erlang. Tak proc ne. Vyhodou CouchDB je svobodna volba skriptovaciho jazyka. Treba ja Erlang neumim. Veskery kod mam v C++, mohu treba sdilet hlavickove soublory s definicemi struktur. Vykon neni jedinym kriteriem. Pokud mam na vyber mezi pomalejsim JS, bez moznosti sdilet definice a rychlejsi C++ s touto moznosti, pak volim C++. Pokud budu potrebovat surovy vykon, mohu se prekonat a neco v tom erlangu tam spichnout.

    Co se tyce zapocitani casu kompilace. CouchDB pouziva spidermonkey. Nevim jak dobry ma JIT, ale rozhodne kompilaty nikam neuklada, takze kazda dalsi instance kompiluje a optimalizuje znovat. Couchcpp uklada kompilaty do cache, kompiluje se jen jednou pro novy skript a pripadne ze nekdo smaze cache nebo vyjde nova verze couchcpp (ktera automaticky cache smaze), jinak se nekompiluje, proto cas kompilace C++ fragmentu nezapocitavam. Vzhledem k tomu, ze pri zmene skriptu se provadi fullindex, je cas kompilace zanedbatelny vuci tomu, jak dlouho muze v realne db trvat reindex.

    Pri testech jsem opakovane provadel reindex bez toho abych nejak ovlivnoval oba skriptovaci engine. Zvysovani vykonu u JS casem jsem nepozoroval. Ty cisla byla stale stejna.