క్లౌడ్ఫ్లేర్, మొజిల్లా, ఫేస్బుక్ మరియు బ్లూమ్బెర్గ్ నుండి ఇంజనీర్లు
పరీక్ష కోసం
BinaryAST ఇప్పటికే అందుబాటులో ఉంది
జావాస్క్రిప్ట్ను ప్రాసెస్ చేస్తున్నప్పుడు, కోడ్ని లోడ్ చేయడం మరియు అన్వయించే దశలో గణనీయమైన సమయం వెచ్చించబడుతుంది. అనేక జనాదరణ పొందిన సైట్లలో డౌన్లోడ్ చేయబడిన JavaScript వాల్యూమ్ 10 MB (ఉదాహరణకు, లింక్డ్ఇన్ కోసం - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB)కి దగ్గరగా ఉన్నందున, JavaScript యొక్క ప్రారంభ ప్రాసెసింగ్ గణనీయమైన ఆలస్యాన్ని పరిచయం చేస్తుంది. కోడ్ లోడ్ అయినప్పుడు ఫ్లైలో ASTని పూర్తిగా నిర్మించలేకపోవడం వలన బ్రౌజర్ వైపు పార్సింగ్ దశ కూడా నెమ్మదించబడుతుంది (బ్రౌజర్ పొందడం కోసం కోడ్ బ్లాక్లు పూర్తి లోడ్ అయ్యే వరకు వేచి ఉండాలి, ఫంక్షన్ల ముగింపు వంటిది ప్రస్తుత మూలకాలను అన్వయించడానికి సమాచారం లేదు).
వారు కోడ్ను కనిష్టీకరించిన మరియు కుదించిన రూపంలో పంపిణీ చేయడం ద్వారా, అలాగే బ్రౌజర్ ద్వారా రూపొందించబడిన బైట్కోడ్ను కాష్ చేయడం ద్వారా సమస్యను పాక్షికంగా పరిష్కరించడానికి ప్రయత్నిస్తున్నారు. ఆధునిక సైట్లలో, కోడ్ చాలా తరచుగా నవీకరించబడుతుంది, కాబట్టి కాషింగ్ సమస్యను పాక్షికంగా మాత్రమే పరిష్కరిస్తుంది. WebAssembly ఒక పరిష్కారం కావచ్చు, కానీ దీనికి కోడ్లో స్పష్టమైన టైపింగ్ అవసరం మరియు ఇప్పటికే ఉన్న JavaScript కోడ్ ప్రాసెసింగ్ను వేగవంతం చేయడానికి ఇది సరిగ్గా సరిపోదు.
జావాస్క్రిప్ట్ స్క్రిప్ట్లకు బదులుగా రెడీమేడ్ కంపైల్డ్ బైట్కోడ్ను అందించడం మరొక ఎంపిక, కానీ బ్రౌజర్ ఇంజిన్ డెవలపర్లు దీనికి వ్యతిరేకంగా ఉన్నారు, ఎందుకంటే మూడవ పక్షం బైట్కోడ్ ధృవీకరించడం కష్టం, దాని ప్రత్యక్ష ప్రాసెసింగ్ వెబ్ స్తరీకరణకు దారితీస్తుంది, అదనపు భద్రతా ప్రమాదాలు తలెత్తుతాయి మరియు అభివృద్ధి యూనివర్సల్ బైట్కోడ్ ఫార్మాట్ అవసరం.
కొత్త బైట్కోడ్ను సృష్టించకుండా లేదా జావాస్క్రిప్ట్ భాషను మార్చకుండా మీ ప్రస్తుత కోడ్ అభివృద్ధి మరియు డెలివరీ మోడల్కి సరిపోయేలా BinaryAST మిమ్మల్ని అనుమతిస్తుంది. BinaryAST ఫార్మాట్లోని డేటా పరిమాణం కంప్రెస్డ్ మినిఫైడ్ జావాస్క్రిప్ట్ కోడ్తో పోల్చవచ్చు మరియు సోర్స్ టెక్స్ట్ పార్సింగ్ దశను తొలగించడం ద్వారా ప్రాసెసింగ్ వేగం గమనించదగ్గ విధంగా పెరుగుతుంది. అదనంగా, ఫార్మాట్ మొత్తం డేటా పూర్తయ్యే వరకు వేచి ఉండకుండా, BinaryAST లోడ్ అయినందున బైట్కోడ్ చేయడానికి సంకలనాన్ని అనుమతిస్తుంది. అదనంగా, సర్వర్ వైపు అన్వయించడం మీరు ఉపయోగించని విధులు మరియు తిరిగి వచ్చిన BinaryAST ప్రాతినిధ్యం నుండి అనవసరమైన కోడ్ను మినహాయించడానికి అనుమతిస్తుంది, ఇది బ్రౌజర్ వైపు అన్వయించేటప్పుడు, అనవసరమైన ట్రాఫిక్ను అన్వయించడం మరియు ప్రసారం చేయడం రెండింటిలోనూ సమయాన్ని వృథా చేస్తుంది.
BinaryAST యొక్క లక్షణం రీడబుల్ జావాస్క్రిప్ట్ని పునరుద్ధరించగల సామర్ధ్యం, ఇది అసలు వెర్షన్తో సమానంగా ఉండదు, కానీ అర్థపరంగా సమానంగా ఉంటుంది మరియు అదే వేరియబుల్స్ మరియు ఫంక్షన్ల పేర్లను కలిగి ఉంటుంది (BinaryAST పేర్లను సేవ్ చేస్తుంది, కానీ స్థానాల గురించి సమాచారాన్ని సేవ్ చేయదు. కోడ్, ఫార్మాటింగ్ మరియు వ్యాఖ్యలు). నాణెం యొక్క మరొక వైపు కొత్త దాడి వెక్టర్స్ యొక్క ఆవిర్భావం, కానీ డెవలపర్ల ప్రకారం, బైట్కోడ్ పంపిణీ వంటి ప్రత్యామ్నాయాలను ఉపయోగిస్తున్నప్పుడు కంటే అవి చాలా చిన్నవి మరియు నియంత్రించదగినవి.
facebook.com కోడ్ యొక్క పరీక్షలు జావాస్క్రిప్ట్ని అన్వయించడం 10-15% CPU వనరులను వినియోగిస్తుందని మరియు JIT కోసం బైట్కోడ్ మరియు ప్రారంభ కోడ్ ఉత్పత్తిని రూపొందించడం కంటే అన్వయించడం ఎక్కువ సమయం తీసుకుంటుందని చూపించింది. SpiderMonkey ఇంజిన్లో, ASTని పూర్తిగా నిర్మించడానికి సమయం 500-800 ms పడుతుంది, మరియు BinaryAST ఉపయోగం ఈ సంఖ్యను 70-90% తగ్గించింది.
సాధారణంగా, చాలా వెబ్ బాణసంచా కోసం, BinaryASTని ఉపయోగిస్తున్నప్పుడు, ఆప్టిమైజేషన్ లేకుండా మోడ్లో జావాస్క్రిప్ట్ పార్సింగ్ సమయం 3-10% తగ్గుతుంది మరియు ఉపయోగించని ఫంక్షన్లను విస్మరించే మోడ్ ప్రారంభించబడినప్పుడు 90-97% తగ్గుతుంది.
1.2 MB JavaScript పరీక్ష సెట్ని అమలు చేస్తున్నప్పుడు, BinaryASTని ఉపయోగించడం వలన డెస్క్టాప్ సిస్టమ్ (Intel i338)లో 314 నుండి 7 ms వరకు మరియు మొబైల్ పరికరంలో (HTC One M2019) 1455 నుండి 8 ms వరకు వేగవంతం చేయడానికి ప్రారంభ సమయం అనుమతించబడింది.
మూలం: opennet.ru