No tak to nepřehánějte :)
Volání virtuální metody:
00034493 mov ecx,dword ptr [ebx]
00034495 mov edx,dword ptr [ecx]
00034497 call dword ptr [edx+20h]
Vlastní metoda
--- e:\users\ondra\cpp-projects\immujson\src\imtjson\arrayvalue.cpp ------------
return v.size();
0009CF90 mov eax,dword ptr [ecx+0Ch]
0009CF93 sub eax,dword ptr [ecx+8]
0009CF96 sar eax,2
0009CF99 ret
Na alokace je přidaný alokátor, doimplementovat si vhodný může každý, to přesahuje rámec knihovny. Při COW přístupu se zpravidla dělá jedna alokace pro nový kontejner, následně se tam nasdílí všechny nezměněné prvky. Největší zdržovákem je lock inc a lock dec u počítání referencí. Nicméně je to daň za to, že nemusím vytvářet hluboké kopie a nemusím používat zámky při práci s daty, které jsou sdílené mezi vlákny (při změně DOMu stačí zámek na změnu té sdílené proměnné která to celé drží - něco jako commit změn, dokud změna neni finální, ostatní vlákna vidí původní obsah)
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 632×
Přečteno 23 688×
Přečteno 22 739×
Přečteno 20 718×
Přečteno 17 626×