Odpovídáte na názor ke článku Automatická správa paměti deterministicky.
[3]
1) Load-inc/dec-store lze dobře optimalizovat, pokud to podporuje hardware (dneska to umí už snad všechno), a je potom prakticky nezměřitelný ve srovnání se samotným tracingem (tou částí, kdy probíhá hledání smetí). Také se dá výrazně optimalizovat buď zavedením move sématiky (v C++ opět od C++11) nebo vhodným optimalizátorem (to je asi to, co má WinRT).
2) Alokace i dealokace v dynamické paměti jsou stejné u jakéhokoliv přístupu, implementuje to totiž alokátor (malloc má problémy s paralelním výkonem kvůli globálnímu zámku, ale za to nemůže reference counting). Samotné ukazatele se ve většině implementací (a to jak u tracingu tak u reference countingu) alokují na zásobníku a taková alokace i dealokace je jenom posun pointeru (u reference countingu potom následuje ještě inc/dec). Reference counting neumožňuje provést compact, ale moderní alokátory jej stejně nepotřebují.
3) Tracing vždycky žere víc než reference counting. To je prostě daň za to, že dokáže vyhledávat cykly a díky tomu nepotřebuje slabé ukazatele.
Autor se zabývá vývojem kompilátorů a knihoven pro objektově-orientované programovací jazyky.
Přečteno 37 775×
Přečteno 26 421×
Přečteno 24 934×
Přečteno 21 278×
Přečteno 18 933×