Microsoft je otvorio biblioteku pod MIT licencom
Ključna karakteristika mimalloca je njegova kompaktna implementacija (manje od 3500 linija koda) i vrlo visoke performanse. IN
Za procjenu učinka, skup postojećih
Visoke performanse se postižu uglavnom korištenjem besplatnog dijeljenja liste. Umjesto jedne velike liste, mimalloc koristi niz manjih lista, od kojih je svaka vezana za memorijsku stranicu. Ovaj pristup smanjuje fragmentaciju i povećava lokalizaciju podataka u memoriji. Memorijska stranica je grupirani skup blokova slične veličine. Na 64-bitnim sistemima, veličina stranice je obično 64 KB. Ako na stranici nema zauzetih blokova, ona se potpuno oslobađa i memorija se vraća u operativni sistem, što smanjuje troškove memorije i fragmentaciju u dugotrajnim programima.
Biblioteka se može uključiti u fazi povezivanja ili učitati za već sastavljen program (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Biblioteka takođe obezbeđuje
Moguće je izgraditi biblioteku u sigurnom načinu rada, u kojem se na granicama bloka zamjenjuju posebne stranice za provjeru memorije (guard-pages), a koristi se randomizacija distribucije blokova i šifriranje lista oslobođenih blokova. Takve mjere omogućavaju blokiranje najčešćih tehnika za iskorištavanje prekoračenja bafera zasnovanog na hrpi. Kada omogućite Safe Mode, performanse se smanjuju za približno 3%.
Među karakteristikama mimalloca, također se ističe da nije podložan problemima s nadimanjem zbog velike fragmentacije. U najgorem slučaju, potrošnja memorije se povećava za 0.2% za metapodatke i može dostići 16.7% za distribuiranu memoriju. Kako bi izbjegao sukobe prilikom pristupa resursima, mimalloc koristi samo atomske operacije.
izvor: opennet.ru