Facebook ကုမ္ပဏီ ကြေငြာခဲ့သည် hash tables ၏ open source အကောင်အထည်ဖော်မှုအကြောင်း F14၊ ထိရောက်သောမှတ်ဉာဏ်သုံးစွဲမှုအတွက် အကောင်းဆုံးပြုလုပ်ထားသည်။ F14 ကို hash table အမျိုးအစားအများစုအတွက် အစားထိုးအဖြစ် Facebook အခြေခံအဆောက်အအုံတွင် အသုံးပြုထားပြီး စွမ်းဆောင်ရည်ကို မထိခိုက်စေဘဲ မှတ်ဉာဏ်သုံးစွဲမှုကို လျှော့ချနိုင်သည်။ F14 သည် google::sparse_hash_map hash tables များကို သိသိသာသာ သာလွန်ကောင်းမွန်ပြီး မှတ်ဉာဏ်သုံးစွဲမှုတွင် အထိရောက်ဆုံးဟု သတ်မှတ်ခံထားရသည်။ ပရောဂျက်ကုဒ်ကို C++ ဖြင့် ရေးသားထားပြီး စာကြည့်တိုက်တွင် ထည့်သွင်းထားသည်။ မိုက်မဲမှု.
F14 သည် 14 ဖြင့် နှစ်ဆ ပေါင်းခြင်းအပေါ် အခြေခံ၍ တိုက်မှုဖြေရှင်းမှုစနစ်ပါရှိသော algorithms ကို ရည်ညွှန်းသည် နမူနာများ၏ sequences (အကွက် ၁၄ ခုပါသော ကွင်းဆက်တစ်ခုကို hash table cell တစ်ခုတွင် သိမ်းဆည်းထားပြီး၊ ဆဲလ်များကြားကာလကို auxiliary hash function ဖြင့် တွက်ချက်သည်)။ ဆဲလ်စစ်ထုတ်ခြင်း လုပ်ငန်းများကို အရှိန်မြှင့်ရန်၊ အကောင်အထည်ဖော်မှုသည် x14_2 စနစ်များအတွက် vector ညွှန်ကြားချက် SSE86 နှင့် Aarch64 အတွက် NEON ကို အသုံးပြုထားပြီး သော့ကြိုးများပါရှိသော အပေါက်များကို ရွေးချယ်ခြင်းနှင့် ကွင်းဆက်အတွင်း သော့များကို ဖယ်ထုတ်ရန်အတွက် လုပ်ဆောင်ချက်များကို အပြိုင်လုပ်ဆောင်ခြင်းအား ခွင့်ပြုပေးပါသည်။ ပရိုဆက်ဆာ cache ကိုအသုံးပြုခြင်း၏ထိရောက်မှုနှင့်တိုက်မှုအရေအတွက်အကြားအကောင်းဆုံးချိန်ခွင်လျှာဖြစ်သည့် 64 slot များကိုတစ်ချိန်တည်းတွင်လုပ်ဆောင်သည်။
F14 ၏ အထူးအင်္ဂါရပ်မှာ မတူညီသော ဒေတာသိုလှောင်မှုဗျူဟာများကို ရွေးချယ်နိုင်သည်-
- F14NodeMap - ကြီးမားသောနှင့် အလတ်စားသော့များအတွက် မှတ်ဉာဏ်အနည်းဆုံးကို စားသုံးသည်။ ထည့်သွင်းမှုတစ်ခုစီတွင် malloc သို့ခေါ်ဆိုမှုဖြင့် အစိတ်အပိုင်းများကို သွယ်ဝိုက်သိမ်းဆည်းထားကြောင်း သေချာစေပါ။
- F14ValueMap - သေးငယ်သောသော့များအတွက် မမ်မိုရီသုံးစွဲမှု အနည်းငယ်ကို ထောက်ပံ့ပေးသည်။ ဒြပ်စင်များကို ဆဲလ်များကိုယ်တိုင် (inline) တွင် သိမ်းဆည်းထားသည်။ အလတ်စားနှင့် အကြီးစားသော့များအတွက်၊
- F14VectorMap - စားပွဲကြီးများနှင့် ရှုပ်ထွေးသောသော့များအတွက် ပိုမြန်သော်လည်း ရိုးရိုးသော့များနှင့် စားပွဲအသေးများအတွက် နှေးကွေးသည်။ ဒြပ်စင်များကို စဉ်ဆက်မပြတ် လူနေအခင်းအကျင်းတစ်ခုထဲသို့ ထုပ်ပိုးထားပြီး 32-ဘစ် အညွှန်းညွှန်ပြချက်ဖြင့် ဖြေရှင်းထားသည်။
- F14FastMap သည် ပေါင်းစပ်ဗျူဟာတစ်ခုဖြစ်သည်။ သော့သည် 24 bytes ထက်နည်းပါက၊ ထို့နောက် F14ValueMap ကိုရွေးချယ်မည်ဖြစ်ပြီး ထို့ထက်ပိုပါက F14VectorMap ကိုရွေးချယ်မည်ဖြစ်သည်။
source: opennet.ru