Ještě bych chtěl ke svým příspěvkům dodat, že kromě připomínek ohledně alokátoru se mi jinak Vaše řešení velmi líbí, protože problémy, které popisujete, jsem relativně nedávno taky řešil.
Na serveru, na kterém jsem pracoval, byla zvolena JSON knihovna, která sice dokument sparsuje (údajně) na jednu alokaci (to byla priorita), ale používá sdílení dat (bez COW), takže si musím hodně dávat pozor na to, abych věděl, kdo všechno tu referenci má.
Děkuji za hodnocení, názory i tipy za vylepšení. Projek je na githubu, lze ho forknout takže jakékoliv vylepšení je možné zapracovat přes pull request a budu rád, když to bude mít víc uživatelů a přispěvatelů.
Aktuálně ještě v rámci přípravy dalšího článku jsem pustil některé testy přes valgrind a jeho profiler a zjistil několik zajímavých čísel. Tak například utilitka jsonpack, která komprimuje json pomocí knihovny je složena z dvou kroků: parsování jsonu a následnou serializaci a pakování. Operace malloc zabírá as 4.77% času. Atomické operace 0,10% času. Pro porovnání std::istream::get() zabírá 7.74%. Největšími zdržováky jsou mapy. Vkládání prvku do mapy zabírá 20% celkového času běhu (!).
Rozhodně zajímavá čísla. Budu se tím dál zabývat.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 50 630×
Přečteno 23 688×
Přečteno 22 738×
Přečteno 20 718×
Přečteno 17 626×