Názor ke článku JSON pro C++11 s immutabilním DOMem. od Ondřej Novák - No tak to nepřehánějte :) Volání virtuální metody: 00034493 mov...

  • 14. 1. 2017 0:42

    Ondřej Novák

    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\immuj­son\src\imtjson\a­rrayvalue.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)