Hlavní navigace

Názor k článku Go: minimalistický a překvapivě výkonný programovací jazyk od JSH - Oboje má trochu jiné vlastnosti, i když s...

Článek je starý, nové názory již nelze přidávat.

  • 22. 11. 2018 19:25

    JSH (neregistrovaný) ---.cust.nbox.cz

    Oboje má trochu jiné vlastnosti, i když s projevují až v extrémnějších situacích.

    GC má rychlejší alokaci, jen se přičte k pointeru. Moc tam nehrozí fragmentace paměti. malloc musí hledat volný blok paměti a i uvolňování chvíli trvá. Zase tam nejsou pauzy na GC, i když pauzy jsou u novějších generačních GC omezené. A i fragmentace u novějších implementací haldy není až tak zlá. Stručně, u malloc je drahá alokace/dealokace paměti, u GC je nákladné dlouhé držení alokované paměti. Jak dobrý GC má teď go netuším, ale v začátcích byl dost špatný.

    U smart pointerů je třeba si dát pozor na cykly. Tvrdí se, že GC tím netrpí, ale není to úplně pravda. Stačí nějaký callback a i jazyk s GC může leakovat.

    Co u GC jazyka nehrozí je přetečení zásobníku při uvolňování dlouhého řetězu smart pointerů. Pokud je v C++ problém rekurzivní volání řady destruktorů, pak je třeba to uvolňování ručně přepsat na smyčku. Ale u běžných datových struktur nebývají úrovně zanoření takové, aby to nějak moc nastávalo.