ืžื™ืงืจื•ืกื•ืคื˜ ืคืชื—ื” ืืช ื”ืงื•ื“ ืขื‘ื•ืจ ืžืขืจื›ืช ื”ืงืฆืืช ื”ื–ื™ื›ืจื•ืŸ mimalloc

ืžื™ืงืจื•ืกื•ืคื˜ ืคืชื—ื” ืกืคืจื™ื™ื” ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT ืžืžืœื•ืง ืžื™ื™ืฉื•ืžื™ื ืฉืœ ืžืขืจื›ืช ื”ืงืฆืืช ื–ื™ื›ืจื•ืŸ ืฉื ื•ืฆืจื” ื‘ืžืงื•ืจ ืขื‘ื•ืจ ืจื›ื™ื‘ื™ ื–ืžืŸ ืจื™ืฆื” ืฉืœ ืฉืคื•ืช ืงื•ืงื” ะธ ืœื”ื™ืฉืขืŸ. Mimalloc ืžื•ืชืื ืœืฉื™ืžื•ืฉ ื‘ื™ื™ืฉื•ืžื™ื ืกื˜ื ื“ืจื˜ื™ื™ื ืžื‘ืœื™ ืœืฉื ื•ืช ืืช ื”ืงื•ื“ ืฉืœื”ื ื•ื™ื›ื•ืœ ืœืฉืžืฉ ื›ืชื—ืœื™ืฃ ืฉืงื•ืฃ ืœืคื•ื ืงืฆื™ื™ืช malloc. ืชื•ืžืš ื‘ืขื‘ื•ื“ื” ืขืœ Windows, macOS, Linux, BSD ื•ืžืขืจื›ื•ืช ืื—ืจื•ืช ื“ืžื•ื™ื•ืช Unix.

ื”ืžืืคื™ื™ืŸ ื”ืžืจื›ื–ื™ ืฉืœ mimalloc ื”ื•ื ื”ื™ื™ืฉื•ื ื”ืงื•ืžืคืงื˜ื™ ืฉืœื• (ืคื—ื•ืช ืž-3500 ืฉื•ืจื•ืช ืงื•ื“) ื•ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ืžืื•ื“. IN ื‘ื“ื™ืงื•ืช ืฉื‘ื•ืฆืขื• mimalloc ืขืœื” ืขืœ ื›ืœ ืกืคืจื™ื•ืช ื”ืงืฆืืช ื”ื–ื™ื›ืจื•ืŸ ื”ืžืชื—ืจื•ืช, ื›ื•ืœืœ ื’'ืžืœื•ืง, tcmalloc, snmalloc, rpmalloc ะธ ืื•ืฆืจ.

ื›ื“ื™ ืœื”ืขืจื™ืš ื‘ื™ืฆื•ืขื™ื, ืงื‘ื•ืฆื” ืฉืœ ืงื™ื™ื ื‘ื“ื™ืงื•ืช ืกื˜ื ื“ืจื˜ื™ื•ืช ื‘ื‘ื“ื™ืงื•ืช ืžืกื•ื™ืžื•ืช, mimalloc ืžื”ื™ืจ ืคื™ ื›ืžื” ืžืžืขืจื›ื•ืช ืื—ืจื•ืช; ืœืžืฉืœ, ื‘ืžื‘ื—ืŸ ื ื“ื™ื“ืช ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ื™ืŸ ื—ื•ื˜ื™ื ืฉื•ื ื™ื, ื”ืชื‘ืจืจ ื›ื™ mimalloc ืžื”ื™ืจ ื™ื•ืชืจ ืž-tcmalloc ื•-jemalloc ืคื™ 2.5. ื™ื—ื“ ืขื ื–ืืช, ื‘ืจื•ื‘ ื”ื‘ื“ื™ืงื•ืช ื ืฆืคื™ืช ื’ื ืฆืจื™ื›ืช ื–ื™ื›ืจื•ืŸ ื ืžื•ื›ื” ื™ื•ืชืจ, ื‘ืžืฆื‘ื™ื ืžืกื•ื™ืžื™ื ื ื™ืชืŸ ืœื”ืคื—ื™ืช ืืช ืฆืจื™ื›ืช ื”ื–ื™ื›ืจื•ืŸ ื‘-25%.

ืžื™ืงืจื•ืกื•ืคื˜ ืคืชื—ื” ืืช ื”ืงื•ื“ ืขื‘ื•ืจ ืžืขืจื›ืช ื”ืงืฆืืช ื”ื–ื™ื›ืจื•ืŸ mimalloc

ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ืžื•ืฉื’ื™ื ื‘ืขื™ืงืจ ื‘ืืžืฆืขื•ืช ืฉื™ืžื•ืฉ ื‘ืจื™ืกื•ืง ืจืฉื™ืžื•ืช ื—ื™ื ื. ื‘ืžืงื•ื ืจืฉื™ืžื” ืื—ืช ื’ื“ื•ืœื”, mimalloc ืžืฉืชืžืฉ ื‘ืกื“ืจื” ืฉืœ ืจืฉื™ืžื•ืช ืงื˜ื ื•ืช ื™ื•ืชืจ, ืฉื›ืœ ืื—ืช ืžื”ืŸ ืงืฉื•ืจื” ืœืขืžื•ื“ ื–ื™ื›ืจื•ืŸ. ื’ื™ืฉื” ื–ื• ืžืคื—ื™ืชื” ืืช ื”ืคื™ืฆื•ืœ ื•ืžื’ื“ื™ืœื” ืืช ืžืงื•ืžื™ื•ืช ื”ื ืชื•ื ื™ื ื‘ื–ื™ื›ืจื•ืŸ. ื“ืฃ ื–ื™ื›ืจื•ืŸ ื”ื•ื ืงื‘ื•ืฆื” ืžืงื•ื‘ืฆืช ืฉืœ ื‘ืœื•ืงื™ื ื‘ื’ื•ื“ืœ ื“ื•ืžื”. ื‘ืžืขืจื›ื•ืช 64 ืกื™ื‘ื™ื•ืช, ื’ื•ื“ืœ ื”ืขืžื•ื“ ื”ื•ื ื‘ื“ืจืš ื›ืœืœ 64 KB. ืื ืœื ื ื•ืชืจื• ื‘ืœื•ืงื™ื ืชืคื•ืกื™ื ื‘ืขืžื•ื“, ื”ื•ื ืžืฉืชื—ืจืจ ืœื—ืœื•ื˜ื™ืŸ ื•ื”ื–ื™ื›ืจื•ืŸ ืžื•ื—ื–ืจ ืœืžืขืจื›ืช ื”ื”ืคืขืœื”, ืžื” ืฉืžืคื—ื™ืช ืืช ืขืœื•ื™ื•ืช ื”ื–ื™ื›ืจื•ืŸ ื•ื”ืคื™ืฆื•ืœ ื‘ืชื•ื›ื ื•ืช ืืจื•ื›ื•ืช ื˜ื•ื•ื—.

ื ื™ืชืŸ ืœื›ืœื•ืœ ืืช ื”ืกืคืจื™ื™ื” ื‘ืฉืœื‘ ื”ืงื™ืฉื•ืจ ืื• ืœื˜ืขื•ืŸ ืขื‘ื•ืจ ืชื•ื›ื ื™ืช ืฉื”ื•ืจื›ื‘ื” ื›ื‘ืจ ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). ื”ืกืคืจื™ื™ื” ืžืกืคืงืช ื’ื API ืœืฉื™ืœื•ื‘ ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื‘ื–ืžืŸ ืจื™ืฆื” ื•ื‘ืงืจืช ื”ืชื ื”ื’ื•ืช ืขื“ื™ื ื”, ืœืžืฉืœ, ืœื—ื™ื‘ื•ืจ ืžื˜ืคืœื™ื ืœืฉื—ืจื•ืจ ื–ื™ื›ืจื•ืŸ ืžื•ืฉื”ื” ื•ืžื•ื ื” ืžื•ื ื•ื˜ื•ื ื™ ืœื”ื’ื“ืœืช ืžื•ื ื™ื. ื ื™ืชืŸ ืœื™ืฆื•ืจ ื•ืœื”ืฉืชืžืฉ ื‘ื›ืžื” "ืขืจื™ืžื•ืช" ื‘ืืคืœื™ืงืฆื™ื” ืœื”ืคืฆื” ืขืœ ืคื ื™ ืื–ื•ืจื™ ื–ื™ื›ืจื•ืŸ ืฉื•ื ื™ื. ืืคืฉืจ ื’ื ืœืฉื—ืจืจ ืืช ื”ืขืจื™ืžื” ื›ื•ืœื”, ืžื‘ืœื™ ืœืขื‘ื•ืจ ื•ืœืฉื—ืจืจ ื‘ื ืคืจื“ ืืช ื”ื—ืคืฆื™ื ื”ืžื•ื ื—ื™ื ื‘ื”.

ืืคืฉืจ ืœื‘ื ื•ืช ืืช ื”ืกืคืจื™ื™ื” ื‘ืžืฆื‘ ื‘ื˜ื•ื—, ืฉื‘ื• ืžื—ืœื™ืคื™ื ื“ืคื™ ื‘ื“ื™ืงืช ื–ื™ื›ืจื•ืŸ ืžื™ื•ื—ื“ื™ื (ื“ืคื™ ืฉืžื™ืจื”) ื‘ื’ื‘ื•ืœื•ืช ื”ื‘ืœื•ืง, ื•ืžืฉืชืžืฉื™ื ื‘ืืงืจืื™ ืฉืœ ื”ืคืฆืช ื‘ืœื•ืงื™ื ื•ื”ืฆืคื ื” ืฉืœ ืจืฉื™ืžื•ืช ืฉืœ ื‘ืœื•ืงื™ื ืžืฉื•ื—ืจืจื™ื. ืืžืฆืขื™ื ื›ืืœื” ืžืืคืฉืจื™ื ืœื—ืกื•ื ืืช ื”ื˜ื›ื ื™ืงื•ืช ื”ื ืคื•ืฆื•ืช ื‘ื™ื•ืชืจ ืœื ื™ืฆื•ืœ ื’ืœื™ืฉื•ืช ื—ื™ืฅ ืžื‘ื•ืกืกื•ืช ืขืจื™ืžื”. ื›ืืฉืจ ืืชื” ืžืคืขื™ืœ ืžืฆื‘ ื‘ื˜ื•ื—, ื”ื‘ื™ืฆื•ืขื™ื ื™ื•ืจื“ื™ื ื‘ื›-3%.

ื‘ื™ืŸ ื”ืชื›ื•ื ื•ืช ืฉืœ mimalloc, ืžืฆื•ื™ืŸ ื’ื ืฉื”ื•ื ืื™ื ื• ืจื’ื™ืฉ ืœื‘ืขื™ื•ืช ืขื ื ืคื™ื—ื•ืช ืขืงื‘ ืคื™ืฆื•ืœ ื’ื“ื•ืœ. ื‘ืชืจื—ื™ืฉ ื”ื’ืจื•ืข ื‘ื™ื•ืชืจ, ืฆืจื™ื›ืช ื”ื–ื™ื›ืจื•ืŸ ืขื•ืœื” ื‘-0.2% ืขื‘ื•ืจ ืžื˜ื ื ืชื•ื ื™ื ื•ื™ื›ื•ืœื” ืœื”ื’ื™ืข ืœ-16.7% ืขื‘ื•ืจ ื–ื™ื›ืจื•ืŸ ืžื‘ื•ื–ืจ. ื›ื“ื™ ืœืžื ื•ืข ื”ืชื ื’ืฉื•ื™ื•ืช ื‘ืขืช ื’ื™ืฉื” ืœืžืฉืื‘ื™ื, mimalloc ืžืฉืชืžืฉ ืจืง ื‘ืคืขื•ืœื•ืช ืื˜ื•ืžื™ื•ืช.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”