Názor ke článku JSON pro C++11 s immutabilním DOMem. od N - Zatím jsem si jen pročetl článek a nedíval...

  • 12. 1. 2017 18:41

    N (neregistrovaný)

    Zatím jsem si jen pročetl článek a nedíval jsem se na zdrojový kód, takže nevím, jak přesně pracuje s de/alokací, nicméně ohledně JSON mám zkušenost z praxe - máme server, který hodně pracuje s JSON dokumenty a obsluhuje tisíce uživatelů. Obvykle to funguje tak, že dojde zpráva, načtou se vnitřní data, vygeneruje se odpověď a příp. uloží upravená vnitřní data - vše v několika JSONech. Při tomto systému je ideální při zpracování zprávy minimalizovat alokace. Ideálně tedy, aby všechny JSON hodnoty měly při zpracování jedné zprávy jeden (sdílený) alokátor (může být třeba tls v C++11 - zpracování jedné zprávy nepřesahuje hranice aktuálního vlákna), který alokaci (malloc/free) snižuje na minimum. V ideálním případě alokuje jeden větší buffer a pokud nepřeteče, celé zpracování zprávy bude mít jen tuto jednu alokaci - a protože vlákno zůstane aktivní pro další zprávy, lze buffer využít znovu, takže počet alokací na zprávu bude nula (resp. 1 / průměrný počet zpráv na vlákno za jeden restart serveru). A díky tomu, že po ukončení zpracování zprávy se všechny JSON struktury uvolní, nebude dlouhodobě docházet k velké fragmentaci.