Facebook కంపెనీ ప్రకటించింది హాష్ టేబుల్స్ ఓపెన్ సోర్స్ అమలు గురించి F14, సమర్థవంతమైన మెమరీ వినియోగం కోసం ఆప్టిమైజ్ చేయబడింది. F14 Facebook ఇన్ఫ్రాస్ట్రక్చర్లో చాలా రకాల హాష్ టేబుల్లకు ప్రత్యామ్నాయంగా ఉపయోగించబడుతుంది మరియు పనితీరును త్యాగం చేయకుండా మెమరీ వినియోగాన్ని తగ్గించవచ్చు. F14 గమనించదగ్గ విధంగా google::sparse_hash_map హాష్ పట్టికలను అధిగమించింది, ఇది ఇప్పటివరకు మెమరీ వినియోగం పరంగా అత్యంత ప్రభావవంతమైనదిగా పరిగణించబడింది. ప్రాజెక్ట్ కోడ్ C++లో వ్రాయబడింది మరియు లైబ్రరీలో చేర్చబడింది మూర్ఖత్వం.
F14 అనేది 14తో డబుల్ హ్యాషింగ్ ఆధారంగా ఘర్షణ రిజల్యూషన్ సిస్టమ్తో కూడిన అల్గారిథమ్లను సూచిస్తుంది నమూనాల క్రమాలు (14 స్లాట్ల గొలుసు ఒక హాష్ టేబుల్ సెల్లో నిల్వ చేయబడుతుంది మరియు కణాల మధ్య విరామం సహాయక హాష్ ఫంక్షన్ని ఉపయోగించి లెక్కించబడుతుంది). సెల్ ఫిల్టరింగ్ కార్యకలాపాలను వేగవంతం చేయడానికి, అమలు x2_86 సిస్టమ్ల కోసం SSE64 వెక్టార్ సూచనలను మరియు Aarch64 కోసం NEONను ఉపయోగిస్తుంది, ఇది కీ చైన్లతో స్లాట్లను ఎంచుకునేందుకు మరియు గొలుసులోని కీలను జల్లెడ పట్టడానికి ఆపరేషన్ల అమలును సమాంతరంగా చేయడానికి అనుమతిస్తుంది. 14 స్లాట్ల బ్లాక్లు ఒకేసారి ప్రాసెస్ చేయబడతాయి, ఇది ప్రాసెసర్ కాష్ని ఉపయోగించే సామర్థ్యం మరియు ఘర్షణల సంఖ్య మధ్య సరైన బ్యాలెన్స్.
F14 యొక్క ప్రత్యేక లక్షణం వివిధ డేటా నిల్వ వ్యూహాలను ఎంచుకునే సామర్థ్యం:
F14NodeMap - పెద్ద మరియు మధ్యస్థ-పరిమాణ కీల కోసం అతి తక్కువ మెమరీని వినియోగిస్తుంది. ప్రతి చొప్పించడంలో mallocకి కాల్తో మూలకాలు పరోక్షంగా నిల్వ చేయబడతాయని నిర్ధారిస్తుంది;
F14ValueMap - చిన్న కీల కోసం కనీస మెమరీ వినియోగాన్ని అందిస్తుంది. మూలకాలు కణాలలోనే (ఇన్లైన్) నిల్వ చేయబడతాయి. మధ్యస్థ మరియు పెద్ద కీల కోసం, ఈ విధానం గమనించదగ్గ మెమరీ ఓవర్హెడ్కు దారితీస్తుంది;
F14VectorMap - పెద్ద టేబుల్స్ మరియు కాంప్లెక్స్ కీల కోసం వేగంగా పని చేస్తుంది, కానీ సాధారణ కీలు మరియు చిన్న టేబుల్స్ కోసం నెమ్మదిగా పని చేస్తుంది. మూలకాలు నిరంతరం జనాభా కలిగిన శ్రేణిలో ప్యాక్ చేయబడతాయి మరియు 32-బిట్ ఇండెక్స్ పాయింటర్ ద్వారా పరిష్కరించబడతాయి;
F14FastMap అనేది సంయుక్త వ్యూహం. కీ 24 బైట్ల కంటే తక్కువగా ఉంటే, F14ValueMap ఎంచుకోబడుతుంది మరియు ఎక్కువ ఉంటే, F14VectorMap ఎంచుకోబడుతుంది.