I-Facebook ivula ukuphunyezwa kweetafile ze-hash ze-F14

Inkampani kaFacebook kwaziswa malunga nokuphunyezwa komthombo ovulekileyo weetafile ze-hash F14, elungiselelwe ukusetyenziswa kakuhle kwememori. I-F14 isetyenziswe kwisiseko se-Facebook njengokutshintshwa kweentlobo ezininzi zeetafile ze-hash kwaye inokunciphisa ukusetyenziswa kwememori ngaphandle kokuncama ukusebenza. I-F14 igqwesa ngokubonakalayo kugoogle::sparse_hash_map iitafile zehash, ezisele zijongwe njengezona zisebenzayo ngokwemigaqo yokusetyenziswa kwememori. Ikhowudi yeprojekthi ibhalwe kwi-C ++ kwaye ifakwe kwilayibrari Bubuwula.

I-F14 ibhekisa kwii-algorithms ezinenkqubo yokusombulula ukungqubana esekwe kwi-hashing ephindwe kabini nge-14 ulandelelwano lweesampulu (ikhonkco le-slots ye-14 igcinwe kwi-cell table ye-hash enye, kwaye ikhefu phakathi kweeseli libalwa ngokusebenzisa umsebenzi oncedisayo we-hash). Ukukhawulezisa ukusebenza kokucoca iiseli, ukuphunyezwa kusebenzisa imiyalelo ye-vector SSE2 kwiinkqubo ze-x86_64 kunye ne-NEON ye-Aarch64, evumela ukulinganisa ukuphunyezwa kwemisebenzi yokukhetha i-slots ngamatyathanga angundoqo kunye nokuhluza izitshixo ngaphakathi kwekhonkco. Iibhloko ze-14 slots zicutshungulwa ngexesha, eyona ibhalansi efanelekileyo phakathi kobuchule bokusebenzisa i-cache yeprosesa kunye nenani lokungqubana.

Into ekhethekileyo yeF14 kukukwazi ukukhetha iindlela ezahlukeneyo zokugcina idatha:

  • I-F14NodeMap - isebenzisa eyona nkumbulo incinci yamaqhosha amakhulu naphakathi. Uqinisekisa ukuba izinto zigcinwa ngokungangqalanga kunye nomnxeba oya kwi-malloc kufakelo ngalunye;
  • I-F14ValueMap - ibonelela ngokusetyenziswa kwememori encinci kwizitshixo ezincinci. Izinto zigcinwa kwiiseli ngokwazo (inline). Kwizitshixo eziphakathi kunye nezikhulu, le ndlela ikhokelela kwimemori ebonakalayo engaphezulu;
  • I-F14VectorMap - isebenza ngokukhawuleza kwiitafile ezinkulu kunye nezitshixo ezinzima, kodwa zicotha kwizitshixo ezilula kunye neetafile ezincinci. Iziqalelo zipakishwe kuluhlu oluhlala luhleli kwaye lujongwe ngesalathisi se-32-bit;
  • I-F14FastMap sisicwangciso esidityanisiweyo. Ukuba isitshixo singaphantsi kwe-24 bytes, ngoko i-F14ValueMap ikhethiwe, kwaye ukuba ngaphezulu, i-F14VectorMap ikhethiwe.

I-Facebook ivula ukuphunyezwa kweetafile ze-hash ze-F14

umthombo: opennet.ru

Yongeza izimvo