рдорд╛рдЗрдХреНрд░реЛрд╕рдлреНрдЯрд▓реЗ mimalloc рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб рдЦреЛрд▓реЗрдХреЛ рдЫ

рдорд╛рдЗрдХреНрд░реЛрд╕рдлреНрдЯрд▓реЗ рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЦреЛрд▓реЗрдХреЛ рдЫ mmalloc рдореМрд▓рд┐рдХ рд░реВрдкрдорд╛ рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рд░рдирдЯрд╛рдЗрдо рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдмрд╛рдЯ рдХреЛрдХрд╛ ╨╕ рджреБрдмрдИред Mimalloc рддрд┐рдиреАрд╣рд░реВрдХреЛ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдирдЧрд░реА рдорд╛рдирдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдХреВрд▓рд┐рдд рдЫ рд░ malloc рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирдХреЛ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдп рдЧрд░реНрди рд╕рдХреНрдЫред Windows, macOS, Linux, BSD рд░ рдЕрдиреНрдп рдпреБрдирд┐рдХреНрд╕-рдЬрд╕реНрддреЛ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред

mimalloc рдХреЛ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╕рдХреЛ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдХреЛрдбрдХреЛ 3500 рд▓рд╛рдЗрдирд╣рд░реВ рднрдиреНрджрд╛ рдХрдо) рд░ рдзреЗрд░реИ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╣реЛред IN рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЧрд░рд┐рдпреЛ mimalloc рд╕рд╣рд┐рдд рд╕рдмреИ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрд▓рд╛рдИ рдмрд╛рд╣рд┐рд░ рдирд┐рдХрд╛рд▓реНрдпреЛ jemalloc, tcmalloc, snmalloc, rpmalloc ╨╕ рд╣реЛрд░реНрдб.

рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди, рдЕрд╡рд╕реНрдерд┐рдд рдХреЛ рдПрдХ рд╕реЗрдЯ рдорд╛рдирдХ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдХреЗрд╣реА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛, mimalloc рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рднрдиреНрджрд╛ рдзреЗрд░реИ рдЧреБрдгрд╛ рдЫрд┐рдЯреЛ рд╣реБрдиреНрдЫ; рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╡рд┐рднрд┐рдиреНрди рдереНрд░реЗрдбрд╣рд░реВ рдмреАрдЪ рд╡рд╕реНрддреБ рдорд╛рдЗрдЧреНрд░реЗрд╕рдирдХреЛ рдкрд░реАрдХреНрд╖рдгрдорд╛, mimalloc tcmalloc рд░ jemalloc рднрдиреНрджрд╛ 2.5 рдЧреБрдгрд╛ рдмрдвреА рдЫрд┐рдЯреЛ рднрдпреЛред рдПрдХреИ рд╕рдордпрдорд╛, рдзреЗрд░реИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛, рдХрдо рдореЗрдореЛрд░реА рдЦрдкрдд рдкрдирд┐ рдЕрд╡рд▓реЛрдХрди рдЧрд░рд┐рдиреНрдЫ; рдХреЗрд╣рд┐ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рд╣рд░реВрдорд╛, рдореЗрдореЛрд░реА рдЦрдкрдд 25% рд▓реЗ рдШрдЯрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред

рдорд╛рдЗрдХреНрд░реЛрд╕рдлреНрдЯрд▓реЗ mimalloc рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб рдЦреЛрд▓реЗрдХреЛ рдЫ

рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдореБрдЦреНрдпрддрдпрд╛ рдирд┐: рд╢реБрд▓реНрдХ рд╕реВрдЪреА рд╢реЗрд░реНрдбрд┐рдЩ рдХреЛ рдкреНрд░рдпреЛрдЧ рдорд╛рд░реНрдлрдд рд╣рд╛рд╕рд┐рд▓ рдЧрд░рд┐рдиреНрдЫред рдПрдЙрдЯрд╛ рдареВрд▓реЛ рд╕реВрдЪреАрдХреЛ рд╕рдЯреНрдЯрд╛, mimalloc рд╕рд╛рдирд╛ рд╕реВрдЪреАрд╣рд░реВрдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдЬрд╕рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдореЛрд░реА рдкреГрд╖реНрдардорд╛ рдмрд╛рдБрдзрд┐рдПрдХреЛ рд╣реБрдиреНрдЫред рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд▓реЗ рдЦрдгреНрдбреАрдХрд░рдг рдШрдЯрд╛рдЙрдБрдЫ рд░ рдореЗрдореЛрд░реАрдорд╛ рдбрд╛рдЯрд╛ рд▓реЛрдХреЗрд▓рд┐рдЯреА рдмрдврд╛рдЙрдБрдЫред рдореЗрдореЛрд░реА рдкреГрд╖реНрда рд╕рдорд╛рди рдЖрдХрд╛рд░рдХреЛ рдмреНрд▓рдХрд╣рд░реВрдХреЛ рд╕рдореВрд╣рдмрджреНрдз рд╕реЗрдЯ рд╣реЛред 64-рдмрд┐рдЯ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛, рдкреГрд╖реНрда рдЖрдХрд╛рд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ 64 KB рд╣реБрдиреНрдЫред рдпрджрд┐ рдкреГрд╖реНрдардорд╛ рдХреБрдиреИ рдкрдирд┐ рдХрдмреНрдЬрд╛ рдЧрд░рд┐рдПрдХрд╛ рдмреНрд▓рдХрд╣рд░реВ рдмрд╛рдБрдХреА рдЫреИрдирдиреН рднрдиреЗ, рдпреЛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдореБрдХреНрдд рд╣реБрдиреНрдЫ рд░ рдореЗрдореЛрд░реА рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдордорд╛ рдлрд░реНрдХрд╛рдЗрдиреНрдЫ, рдЬрд╕рд▓реЗ рдореЗрдореЛрд░реА рд▓рд╛рдЧрдд рд░ рд▓рд╛рдореЛ-рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрдорд╛ рдЦрдгреНрдбреАрдХрд░рдг рдХрдо рдЧрд░реНрджрдЫред

рдкреБрд╕реНрддрдХрд╛рд▓рдпрд▓рд╛рдИ рд▓рд┐рдЩреНрдХрд┐рдЩ рдЪрд░рдгрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд╡рд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдЬрдореНрдорд╛ рдЧрд░рд┐рдПрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдордХреЛ рд▓рд╛рдЧрд┐ рд▓реЛрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (тАЬLD_PRELOAD=/usr/bin/libmimalloc.so myprogramтАЭ)ред рдкреБрд╕реНрддрдХрд╛рд▓рдпрд▓реЗ рдкрдирд┐ рджрд┐рдиреНрдЫ рдПрдкреАрдЖрдИ рд░рдирдЯрд╛рдЗрдо рд░ рдлрд╛рдЗрди-рдЧреНрд░реЗрдиреНрдб рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рдпрдиреНрддреНрд░рдгрдорд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдПрдХреАрдХреГрдд рдЧрд░реНрди, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЕрд▓реНрдЫреА рдореЗрдореЛрд░реА рд░рд┐рд▓реАрдЬ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рдЬрдбрд╛рди рдЧрд░реНрди рд░ рдореЛрдиреЛрдЯреЛрдирд┐рдХ рд░реВрдкрдорд╛ рд╕рдиреНрджрд░реНрдн рдХрд╛рдЙрдиреНрдЯрд░рд╣рд░реВ рдмрдврд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ред рд╡рд┐рднрд┐рдиреНрди рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдорд╛ рд╡рд┐рддрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдзреЗрд░реИ "рд╣рд┐рдкреНрд╕" рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫред рдпрд╕рдорд╛ рд░рд╛рдЦрд┐рдПрдХрд╛ рд╡рд╕реНрддреБрд╣рд░реВрд▓рд╛рдИ рдЫреБрдЯреНрдЯрд╛рдЫреБрдЯреНрдЯреИ рдирд░рд╛рдЗрдХрди, рд╣рд┐рдкрд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЦрд╛рд▓реА рдЧрд░реНрди рдкрдирд┐ рд╕рдореНрднрд╡ рдЫред

рдкреБрд╕реНрддрдХрд╛рд▓рдпрд▓рд╛рдИ рд╕реБрд░рдХреНрд╖рд┐рдд рдореЛрдбрдорд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ, рдЬрд╕рдорд╛ рд╡рд┐рд╢реЗрд╖ рдореЗрдореЛрд░реА рдЬрд╛рдБрдЪ рдкреГрд╖реНрдард╣рд░реВ (рдЧрд╛рд░реНрдб-рдкреГрд╖реНрдард╣рд░реВ) рдмреНрд▓рдХ рд╕реАрдорд╛рд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░рд┐рдиреНрдЫ, рд░ рдмреНрд▓рдХ рд╡рд┐рддрд░рдгрдХреЛ рдЕрдирд┐рдпрдорд┐рддрддрд╛ рд░ рд╕реНрд╡рддрдиреНрддреНрд░ рдмреНрд▓рдХрд╣рд░реВрдХреЛ рд╕реВрдЪреАрд╣рд░реВрдХреЛ рдЗрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рддреНрдпрд╕реНрддрд╛ рдЙрдкрд╛рдпрд╣рд░реВрд▓реЗ рд╣рд┐рдк-рдЖрдзрд╛рд░рд┐рдд рдмрдлрд░ рдУрднрд░рдлреНрд▓реЛ рд╢реЛрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВ рд░реЛрдХреНрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрджрдЫред рдЬрдм рддрдкрд╛рдЗрдБ рд╕реБрд░рдХреНрд╖рд┐рдд рдореЛрдб рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд▓рдЧрднрдЧ 3% рд▓реЗ рдШрдЯреНрдЫред

mimalloc рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реБ рдордзреНрдпреЗ, рдпреЛ рдкрдирд┐ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ рдпреЛ рдареВрд▓реЛ рдЯреБрдХреНрд░рд╛ рдХреЛ рдХрд╛рд░рдг рдмреНрд▓реЛрдЯрд┐рдВрдЧ рд╕рдВрдЧ рд╕рдорд╕реНрдпрд╛рд╣рд░реБ рдХреЛ рд▓рд╛рдЧреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЫреИрдиред рд╕рдмреИрднрдиреНрджрд╛ рдЦрд░рд╛рдм рдЕрд╡рд╕реНрдерд╛рдорд╛, рдореЗрдЯрд╛рдбреЗрдЯрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдореЗрдореЛрд░реА рдЦрдкрдд 0.2% рд▓реЗ рдмрдвреНрдЫ рд░ рд╡рд┐рддрд░рд┐рдд рдореЗрдореЛрд░реАрдХреЛ рд▓рд╛рдЧрд┐ 16.7% рдкреБрдЧреНрди рд╕рдХреНрдЫред рд╕реНрд░реЛрддрд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрджрд╛ рджреНрд╡рдиреНрджреНрд╡рдмрд╛рдЯ рдмрдЪреНрдирдХреЛ рд▓рд╛рдЧрд┐, mimalloc рд▓реЗ рдкрд░рдорд╛рдгреБ рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди