เจฎเจพเจˆเจ•เจฐเฉ‹เจธเจพเจซเจŸ เจจเฉ‡ เจฎเฉ€เจฎเจฒเฉ‹เจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ…เจฒเฉ‹เจ•เฉ‡เจธเจผเจจ เจธเจฟเจธเจŸเจฎ เจฒเจˆ เจ•เฉ‹เจก เจ–เฉ‹เจฒเฉเจนเจฟเจ† เจนเฉˆ

เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเจพเจซเจŸ เจจเฉ‡ MIT เจฒเจพเจ‡เจธเฉˆเจ‚เจธ เจฆเฉ‡ เจคเจนเจฟเจค เจ‡เฉฑเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจ–เฉ‹เจฒเฉเจนเฉ€ เจนเฉˆ mmalloc เจญเจพเจธเจผเจพเจตเจพเจ‚ เจฆเฉ‡ เจฐเจจเจŸเจพเจˆเจฎ เจญเจพเจ—เจพเจ‚ เจฒเจˆ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฌเจฃเจพเจˆ เจ—เจˆ เจ‡เฉฑเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเฉฐเจก เจชเฉเจฐเจฃเจพเจฒเฉ€ เจฆเฉ‡ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจคเฉ‹เจ‚ เจ•เฉ‹เจ•เจพ ะธ เจฒเฉ€เจจ. เจฎเฉ€เจฎเจฒเฉ‹เจ• เจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฌเจฆเจฒเฉ‡ เจฌเจฟเจจเจพเจ‚ เจฎเจฟเจ†เจฐเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเจฃ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ malloc เจซเฉฐเจ•เจธเจผเจจ เจฒเจˆ เจ‡เฉฑเจ• เจชเจพเจฐเจฆเจฐเจธเจผเฉ€ เจฌเจฆเจฒ เจตเจœเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจตเจฟเฉฐเจกเฉ‹เจœเจผ, เจฎเฉˆเจ•เฉ‹เจธ, เจฒเฉ€เจจเจ•เจธ, เจฌเฉ€เจเจธเจกเฉ€ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจฏเฉ‚เจจเจฟเจ•เจธ เจตเจฐเจ—เฉ‡ เจธเจฟเจธเจŸเจฎเจพเจ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจฎเฉ€เจฎเจฒเฉ‹เจ• เจฆเฉ€ เจฎเฉเฉฑเจ– เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจ‡เจธเจฆเจพ เจธเฉฐเจ–เฉ‡เจช เจฒเจพเจ—เฉ‚เจ•เจฐเจจ (เจ•เฉ‹เจก เจฆเฉ€เจ†เจ‚ 3500 เจฒเจพเจˆเจจเจพเจ‚ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ) เจ…เจคเฉ‡ เจฌเจนเฉเจค เจ‰เฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจนเฉˆเฅค IN เจŸเฉˆเจธเจŸ เจ•เฉ€เจคเฉ‡ mimalloc เจจเฉ‡ เจธเจพเจฐเฉ€เจ†เจ‚ เจชเฉเจฐเจคเฉ€เจฏเฉ‹เจ—เฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเฉฐเจก เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจชเจ›เจพเฉœ เจฆเจฟเฉฑเจคเจพ, เจธเจฎเฉ‡เจค jemalloc, tcmalloc, snmalloc, rpmalloc ะธ เจนเฉ‹เจฐเจก.

เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐเจจ เจฒเจˆ, เจฎเฉŒเจœเฉ‚เจฆเจพ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจฎเจฟเจ†เจฐเฉ€ เจŸเฉˆเจธเจŸ เจ•เฉเจ เจŸเฉˆเจธเจŸเจพเจ‚ เจตเจฟเฉฑเจš, mimalloc เจนเฉ‹เจฐ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจจเจพเจฒเฉ‹เจ‚ เจ•เจˆ เจ—เฉเจฃเจพ เจคเฉ‡เจœเจผ เจนเฉเฉฐเจฆเจพ เจนเฉˆ; เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจตเฉฑเจ–-เจตเฉฑเจ– เจฅเฉเจฐเฉˆเจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจตเจธเจคเฉ‚ เจฎเจพเจˆเจ—เจฐเฉ‡เจธเจผเจจ เจฆเฉ‡ เจŸเฉˆเจธเจŸ เจตเจฟเฉฑเจš, mimalloc tcmalloc เจ…เจคเฉ‡ jemalloc เจจเจพเจฒเฉ‹เจ‚ 2.5 เจ—เฉเจฃเจพ เจตเฉฑเจง เจคเฉ‡เจœเจผ เจจเจฟเจ•เจฒเจฟเจ†เฅค เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจŸเฉˆเจธเจŸเจพเจ‚ เจตเจฟเฉฑเจš, เจ˜เฉฑเจŸ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจ–เจชเจค เจตเฉ€ เจตเฉ‡เจ–เฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ; เจ•เฉเจ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš, เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจ–เจชเจค เจจเฉ‚เฉฐ 25% เจคเฉฑเจ• เจ˜เจŸเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจฎเจพเจˆเจ•เจฐเฉ‹เจธเจพเจซเจŸ เจจเฉ‡ เจฎเฉ€เจฎเจฒเฉ‹เจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ…เจฒเฉ‹เจ•เฉ‡เจธเจผเจจ เจธเจฟเจธเจŸเจฎ เจฒเจˆ เจ•เฉ‹เจก เจ–เฉ‹เจฒเฉเจนเจฟเจ† เจนเฉˆ

เจ‰เฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฎเฉเฉฑเจ– เจคเฉŒเจฐ 'เจคเฉ‡ เจฎเฉเจซเจค เจธเฉ‚เจšเฉ€ เจธเจผเจฐเจกเจฟเฉฐเจ— เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€ เจธเฉ‚เจšเฉ€ เจฆเฉ€ เจฌเจœเจพเจ, mimalloc เจ›เฉ‹เจŸเฉ€เจ†เจ‚ เจธเฉ‚เจšเฉ€เจ†เจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจฒเฉœเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐ เจ‡เฉฑเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉฐเจจเฉ‡ เจจเจพเจฒ เจฌเฉฐเจจเฉเจนเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆเฅค เจ‡เจน เจชเจนเฉเฉฐเจš เจซเฉเจฐเฉˆเจ—เจฎเฉˆเจ‚เจŸเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจกเจพเจŸเจพ เจธเจฅเจพเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉฐเจจเจพ เจธเจฎเจพเจจ เจ†เจ•เจพเจฐ เจฆเฉ‡ เจฌเจฒเจพเจ•เจพเจ‚ เจฆเจพ เจธเจฎเฉ‚เจนเจฌเฉฑเจง เจธเฉˆเฉฑเจŸ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค 64-เจฌเจฟเฉฑเจŸ เจธเจฟเจธเจŸเจฎเจพเจ‚ 'เจคเฉ‡, เจชเฉฐเจจเฉ‡ เจฆเจพ เจ†เจ•เจพเจฐ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ 64 KB เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจชเฉฐเจจเฉ‡ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจตเฉ€ เจ•เจฌเจœเจผเฉ‡ เจตเจพเจฒเฉ‡ เจฌเจฒเจพเจ• เจจเจนเฉ€เจ‚ เจฌเจšเฉ‡ เจนเจจ, เจคเจพเจ‚ เจ‡เจน เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ–เจพเจฒเฉ€ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเฉ‚เฉฐ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจตเจพเจชเจธ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจจเจพเจฒ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจšเฉฑเจฒ เจฐเจนเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจฒเจพเจ—เจค เจ…เจคเฉ‡ เจซเฉเจฐเฉˆเจ—เจฎเฉˆเจ‚เจŸเฉ‡เจธเจผเจจ เจ˜เจŸเจฆเฉ€ เจนเฉˆเฅค

เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเฉ‚เฉฐ เจฒเจฟเฉฐเจ•เจฟเฉฐเจ— เจชเฉœเจพเจ… 'เจคเฉ‡ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจพเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉ€ เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เฉ€เจคเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ (โ€œLD_PRELOAD=/usr/bin/libmimalloc.so myprogramโ€) เจฒเจˆ เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ API เจฐเจจเจŸเจพเจˆเจฎ เจ…เจคเฉ‡ เจตเจงเฉ€เจ† เจตเจฟเจตเจนเจพเจฐ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจตเจฟเฉฑเจš เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจจเฉ‚เฉฐ เจเจ•เฉ€เจ•เฉเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ†เจฒเจธเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฐเฉ€เจฒเฉ€เจœเจผ เจนเฉˆเจ‚เจกเจฒเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจ…เจคเฉ‡ เจธเฉฐเจฆเจฐเจญ เจ•เจพเจŠเจ‚เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉ‹เจจเฉ‹เจŸเฉ‹เจจเจฟเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจงเจพเจ‰เจฃ เจฒเจˆเฅค เจตเฉฑเจ–-เจตเฉฑเจ– เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ–เฉ‡เจคเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจ•เจˆ "เจนเฉ€เจชเจธ" เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจตเจฐเจคเจฃเจพ เจธเฉฐเจญเจต เจนเฉˆเฅค เจขเฉ‡เจฐ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ–เจพเจฒเฉ€ เจ•เจฐเจจเจพ เจตเฉ€ เจธเฉฐเจญเจต เจนเฉˆ, เจฌเจฟเจจเจพเจ‚ เจ‡เจธ เจตเจฟเฉฑเจš เจชเจˆเจ†เจ‚ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจกเฉ‡ เจ…เจคเฉ‡ เจตเฉฑเจ– เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚เฅค

เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‰เจฃเจพ เจธเฉฐเจญเจต เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจตเจฟเจธเจผเฉ‡เจธเจผ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจœเจพเจ‚เจš เจชเฉฐเจจเจฟเจ†เจ‚ (เจ—เจพเจฐเจก-เจชเฉ‡เจœ) เจจเฉ‚เฉฐ เจฌเจฒเจพเจ• เจฆเฉ€เจ†เจ‚ เจธเฉ€เจฎเจพเจตเจพเจ‚ 'เจคเฉ‡ เจฌเจฆเจฒเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฌเจฒเจพเจ• เจตเฉฐเจก เจฆเฉ‡ เจฌเฉ‡เจคเจฐเจคเฉ€เจฌเฉ‡เจ•เจฐเจจ เจ…เจคเฉ‡ เจฎเฉเจ•เจค เจฌเจฒเจพเจ•เจพเจ‚ เจฆเฉ€เจ†เจ‚ เจธเฉ‚เจšเฉ€เจ†เจ‚ เจฆเฉ€ เจเจจเจ•เฉเจฐเจฟเจชเจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ…เจœเจฟเจนเฉ‡ เจ‰เจชเจพเจ… เจนเฉ€เจช-เจ…เจงเจพเจฐเจฟเจค เจฌเจซเจฐ เจ“เจตเจฐเจซเจฒเฉ‹ เจฆเจพ เจธเจผเฉ‹เจธเจผเจฃ เจ•เจฐเจจ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจ†เจฎ เจคเจ•เจจเฉ€เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃเจพ เจธเฉฐเจญเจต เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจฎเฉ‹เจก เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฒเจ—เจญเจ— 3% เจ˜เฉฑเจŸ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจฎเจฟเจฎเจพเจฒเฉ‹เจ• เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚, เจ‡เจน เจตเฉ€ เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ•เจฟ เจ‡เจน เจตเฉฑเจกเฉ‡ เจŸเฉเจ•เฉœเฉ‡ เจฆเฉ‡ เจ•เจพเจฐเจจ เจซเฉเฉฑเจฒเจฃ เจฆเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฒเจˆ เจธเฉฐเจตเฉ‡เจฆเจจเจธเจผเฉ€เจฒ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจธเจญ เจคเฉ‹เจ‚ เจฎเจพเฉœเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจฒเจˆ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจ–เจชเจค 0.2% เจตเจง เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจตเฉฐเจกเฉ€ เจ—เจˆ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฒเจˆ 16.7% เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจเจ•เจธเฉˆเจธ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจŸเจ•เจฐเจพเจ… เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฒเจˆ, เจฎเจฟเจฎเจพเจฒเฉ‹เจ• เจธเจฟเจฐเจซ เจชเจฐเจฎเจพเจฃเฉ‚ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: opennet.ru

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹