Microsoft ΠΎΡΠ²ΠΎΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Π½Π° MIT
ΠΠ»ΡΡΠΎΠ²Π°ΡΠ° Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° mimalloc Π΅ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ (ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 3500 ΡΠ΅Π΄Π° ΠΊΠΎΠ΄) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. IN
ΠΠ° Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ°, Π½Π°Π±ΠΎΡ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ
ΠΠΈΡΠΎΠΊΠ°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° Π³Π»Π°Π²Π½ΠΎ ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠΏΠΈΡΡΡΠΈ. ΠΠΌΠ΅ΡΡΠΎ Π΅Π΄ΠΈΠ½ Π³ΠΎΠ»ΡΠΌ ΡΠΏΠΈΡΡΠΊ, mimalloc ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ΡΠΈΡ ΠΎΡ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΈ ΡΠΏΠΈΡΡΡΠΈ, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π΅ ΠΎΠ±Π²ΡΡΠ·Π°Π½ ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ°. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎΡΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. Π‘ΡΡΠ°Π½ΠΈΡΠ° Ρ ΠΏΠ°ΠΌΠ΅Ρ Π΅ Π³ΡΡΠΏΠΈΡΠ°Π½ Π½Π°Π±ΠΎΡ ΠΎΡ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ. ΠΡΠΈ 64-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ 64 KB. ΠΠΊΠΎ Π² ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π΅ ΠΎΡΡΠ°Π½Π°Ρ Π·Π°Π΅ΡΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΡΡ ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΠ΅ Π²ΡΡΡΠ° ΠΊΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΏΡΠΈ Π΄ΡΠ»Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΈΠ»ΠΈ Π·Π°ΡΠ΅Π΄Π΅Π½Π° Π·Π° Π²Π΅ΡΠ΅ ΡΡΠ±ΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° (βLD_PRELOAD=/usr/bin/libmimalloc.so myprogramβ). ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΡΠΎ
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° (guard-pages) ΡΠ΅ Π·Π°ΠΌΠ΅ΡΡΠ²Π°Ρ Π½Π° Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° Π±Π»ΠΎΠΊΠ° ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΈ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΏΠΈΡΡΡΠΈ Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅. Π’Π°ΠΊΠΈΠ²Π° ΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°Ρ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½ΠΈΡ Π½Π° Π±ΡΡΠ΅ΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΊΡΠΏΡΠΈΠ½Π°. ΠΠΎΠ³Π°ΡΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π°ΠΌΠ°Π»ΡΠ²Π° Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 3%.
Π‘ΡΠ΅Π΄ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° mimalloc ΡΠ΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΡΡΠΎ, ΡΠ΅ ΡΠΎΠΉ Π½Π΅ Π΅ ΠΏΠΎΠ΄Π°ΡΠ»ΠΈΠ² Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΠΎΠ΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΡΠ΅ΠΌΠ° ΠΏΠΎΡΠ°Π΄ΠΈ Π³ΠΎΠ»ΡΠΌΠ° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. Π Π½Π°ΠΉ-Π»ΠΎΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Ρ 0.2% Π·Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π΅ 16.7% Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ. ΠΠ° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΡΡΡΡΠΈ, mimalloc ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru