Facebook татбиқи ҷадвалҳои hash F14-ро мекушояд

Ширкати Facebook эълон кард дар бораи татбиқи манбаи кушодаи ҷадвалҳои hash F14, барои истифодаи самараноки хотира оптимизатсия карда шудааст. F14 дар инфрасохтори Facebook ҳамчун ивазкунандаи аксари намудҳои мизҳои ҳаш истифода мешавад ва метавонад истеъмоли хотираро бе кам кардани иҷроиш кам кунад. F14 ба таври назаррас аз ҷадвалҳои hash google::sparse_hash_map, ки то ҳол аз ҷиҳати истеъмоли хотира самараноктарин ҳисобида мешуданд, бартарӣ дорад. Рамзи лоиҳа дар C++ навишта шудааст ва ба китобхона дохил карда шудааст Насиҳат.

F14 ба алгоритмҳое дахл дорад, ки системаи ҳалли бархӯрд дар асоси хэшингии дукарата бо 14 пайдарпайии намунаҳо (дар як ячейкаи ҷадвали хэш занҷири 14 слот нигоҳ дошта мешавад ва фосилаи байни ҳуҷайраҳо бо истифода аз функсияи ёрирасон ҳисоб карда мешавад). Барои суръат бахшидан ба амалиёти филтркунии ҳуҷайраҳо, татбиқ дастурҳои вектории SSE2 барои системаҳои x86_64 ва NEON барои Aarch64-ро истифода мебарад, ки имкон медиҳад иҷрои амалиётҳоро барои интихоби слотҳо бо занҷирҳои калидӣ ва аз ғафс кардани калидҳо дар дохили занҷир параллелизатсия кунанд. Дар як вақт блокҳои 14 слот коркард карда мешаванд, ки тавозуни оптималии байни самаранокии истифодаи кэши протсессори ва шумораи бархӯрдҳо мебошад.

Хусусияти махсуси F14 ин қобилияти интихоби стратегияҳои гуногуни нигоҳдории маълумот мебошад:

  • F14NodeMap - хотираи камтарини калидҳои калон ва миёнаро истеъмол мекунад. Кафолат медиҳад, ки унсурҳо ба таври ғайримустақим бо занг ба malloc дар ҳар як воридкунӣ нигоҳ дошта мешаванд;
  • F14ValueMap - истеъмоли ҳадди ақали хотираро барои калидҳои хурд таъмин мекунад. Элементҳо дар худи ҳуҷайраҳо нигоҳ дошта мешаванд (inline). Барои калидҳои миёна ва калон, ин равиш боиси сарбории назарраси хотира мегардад;
  • F14VectorMap - барои ҷадвалҳои калон ва калидҳои мураккаб тезтар кор мекунад, аммо барои калидҳои оддӣ ва ҷадвалҳои хурд сусттар аст. Элементҳо ба массиви доимӣ ҷойгир карда мешаванд ва бо нишоннамои индекси 32-бит муроҷиат мекунанд;
  • F14FastMap як стратегияи омехта аст. Агар калид камтар аз 24 байт бошад, он гоҳ F14ValueMap интихоб карда мешавад ва агар зиёд бошад, F14VectorMap интихоб карда мешавад.

Facebook татбиқи ҷадвалҳои hash F14-ро мекушояд

Манбаъ: opennet.ru

Илова Эзоҳ