Hlavní navigace

Názor ke článku Správa paměti v C++ od katuma - V prve rade velmi pekny blog, bookmark! Ad GC,...

  • 17. 4. 2012 12:36

    katuma (neregistrovaný) 2a01:490:11:----:----:----:----:----

    V prve rade velmi pekny blog, bookmark!

    Ad GC, vs ne-gc, vs skopove (pun intended) alokace/uvolneni.

    Myslim ze idealni je v dnesni dobe (i pro systems programming) opravdu GC, protoze zpravidla zapada do stylu "nevynalezat znova kolo, i za cenu toho ze holt nebude pornokino".

    Osobne jsem si zvykl "high" konstrukce ( http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization#Ad-hoc_mechanisms ) a boehmgc i v cistem C, da se s tim jit dost nizko pokud hw neni vylozene spartansky - clovek ma vicemene prehled jak to funguje, takze neprichazi o deterministicke chovani (jako by to snad bylo az na minimum pripadu vubec potreba :).

    Nevynucene GC co do produktivity v low jazycich na moji strane jednoznacne vitezi.

    O rezii se vubec da rozsahle polemizovat - je lepsi nejaky slusny generacni mark & sweep, nebo refcounting pri predavani reference kazde shared blbinky, jakozto obcas v C++ templaty "vynucena" forma gc? Zalezi jak je program koncipovan.

    Je-li to spis C-like monolit, tak refcounting je asi jasna volba (gamesky, linux kernel), s tim ze pooling/gc implementujem kde to smysl ma (linux kernel ma samozrejme GC v *mnoha* subsystemech).

    Pokud to je pouze "komplexni bussiness logika", aka interakce mezi bazilionem objektu ktere se vsude mozne predavaj, refcounting spis generuje prusery - napriklad v Pythonu je refcounting udajne proto aby byl gc "deterministicky". Ok, napisu, odladim v techto podminkach a je fajn ze se mi spojeni do db zavre presne ve chvili kdy se ztrati posledni reference, teda az do ty chvile nez se nekde vytvori refcount cykl mrtvych objektu a musi se cekat na M&S. Oops.

    Python to takto dela proto ze lidi proste maji tendence pouzivat M&S na uvolnovani ne-pameti, nedejboze volani destruktoru....

    Nech je proklet ten co pouziva GC na uvolnovani cehokoliv jineho nez pameti, nebo se spoleha na deterministicke destruktory. Bohuzel to plati i pro vetsinu "high" veci jako Java, useknout ruce :( Vetsinou to funguje bez problemu, nez se objevi nejaka takovato zprasena ohyzdnost, nicmene GC je v tom nevinne, pouze jeho mizerne uziti v mistech kde vubec nema co delat.