Atomické operace nejsou rozhodně zadarmo. Navíc lokální alokátor není pouze o rychlosti alokace, ale je hlavně o lokálnosti. Pokud vytvářím JSON dokument, a můj jediný cíl je ten dokument serializovat do stringu, tak to nejlepší co můžu udělat je vytvořit lokální alokátor, který bude vracet adresy blízko sebe. Při takovém návrhu se minimalizuje cache miss, který může stát stovky cyklů. Navíc takový dokument můžu uvolnit třeba jedním zavoláním free() (nebo žádným, pokud si vystačím se zásobníkem), a nemusím se starat o uvolňování interních struktur, které jsou všechny alokované z jednoho většího bloku. Takto to dělá např. V8 engine. V podstatě každá high-performance knihovna si řeší alokaci po svém, protože to co nabízí C/C++ jsou generické alokátory.
Jinak netvrdím, že ta knihovna je špatná, jen tvrdím, že není navržena s ohledem na výkon.
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 707×
Přečteno 23 722×
Přečteno 22 760×
Přečteno 20 746×
Přečteno 17 645×