పైథాన్ కోడ్ యొక్క 4 మిలియన్ లైన్‌లను టైప్ చెకింగ్ చేయడానికి మార్గం. 2 వ భాగము

అనేక మిలియన్ లైన్ల పైథాన్ కోడ్ కోసం డ్రాప్‌బాక్స్ టైప్ కంట్రోల్‌ని ఎలా నిర్వహించిందనే దాని గురించి మెటీరియల్ అనువాదం యొక్క రెండవ భాగాన్ని ఈ రోజు మేము ప్రచురిస్తున్నాము.

పైథాన్ కోడ్ యొక్క 4 మిలియన్ లైన్‌లను టైప్ చెకింగ్ చేయడానికి మార్గం. 2 వ భాగము

మొదటి భాగం చదవండి

అధికారిక రకం మద్దతు (PEP 484)

మేము హ్యాక్ వీక్ 2014లో డ్రాప్‌బాక్స్‌లో మైపీతో మా మొదటి తీవ్రమైన ప్రయోగాలను నిర్వహించాము. హ్యాక్ వీక్ అనేది డ్రాప్‌బాక్స్ హోస్ట్ చేసిన ఒక వారం ఈవెంట్. ఈ సమయంలో, ఉద్యోగులు తమకు కావలసినదానిపై పని చేయవచ్చు! డ్రాప్‌బాక్స్ యొక్క అత్యంత ప్రసిద్ధ సాంకేతిక ప్రాజెక్టులలో కొన్ని ఇలాంటి ఈవెంట్‌లలో ప్రారంభమయ్యాయి. ఈ ప్రయోగం ఫలితంగా, ప్రాజెక్ట్ ఇంకా విస్తృత ఉపయోగం కోసం సిద్ధంగా లేనప్పటికీ, mypy ఆశాజనకంగా ఉందని మేము నిర్ధారించాము.

ఆ సమయంలో, పైథాన్ టైప్ హింటింగ్ సిస్టమ్‌లను ప్రామాణికం చేయాలనే ఆలోచన గాలిలో ఉంది. నేను చెప్పినట్లుగా, పైథాన్ 3.0 నుండి ఫంక్షన్ల కోసం టైప్ ఉల్లేఖనాలను ఉపయోగించడం సాధ్యమవుతుంది, అయితే ఇవి నిర్వచించబడిన సింటాక్స్ మరియు సెమాంటిక్స్ లేకుండా కేవలం ఏకపక్ష వ్యక్తీకరణలు. ప్రోగ్రామ్ అమలు సమయంలో, ఈ ఉల్లేఖనాలు చాలా వరకు విస్మరించబడ్డాయి. హ్యాక్ వీక్ తర్వాత, మేము అర్థశాస్త్రాన్ని ప్రామాణీకరించే పనిని ప్రారంభించాము. ఈ పని ఆవిర్భావానికి దారితీసింది PEP 484 (Guido van Rossum, Łukasz Langa మరియు నేను ఈ పత్రంలో సహకరించాము).

మా ఉద్దేశాలను రెండు వైపుల నుండి చూడవచ్చు. మొదట, మొత్తం పైథాన్ పర్యావరణ వ్యవస్థ టైప్ హింట్‌లను (పైథాన్‌లో "రకం ఉల్లేఖనాలకు" సమానమైన పదం) ఉపయోగించేందుకు ఒక సాధారణ విధానాన్ని అవలంబించగలదని మేము ఆశించాము. ఇది, సాధ్యమయ్యే ప్రమాదాలను బట్టి, అనేక పరస్పరం అననుకూల విధానాలను ఉపయోగించడం కంటే మెరుగైనది. రెండవది, మేము పైథాన్ సంఘంలోని చాలా మంది సభ్యులతో టైప్ ఉల్లేఖన మెకానిజమ్‌లను బహిరంగంగా చర్చించాలనుకుంటున్నాము. ఈ కోరిక పాక్షికంగా పైథాన్ ప్రోగ్రామర్‌ల దృష్టిలో భాష యొక్క ప్రాథమిక ఆలోచనల నుండి "మతభ్రష్టులు" వలె కనిపించకూడదనుకోవడం ద్వారా నిర్దేశించబడింది. ఇది డైనమిక్‌గా టైప్ చేయబడిన భాష, దీనిని "డక్ టైపింగ్" అని పిలుస్తారు. సమాజంలో, ప్రారంభంలోనే, స్టాటిక్ టైపింగ్ ఆలోచన పట్ల కొంత అనుమానాస్పద వైఖరి సహాయం చేయలేకపోయింది. కానీ స్టాటిక్ టైపింగ్ తప్పనిసరి కాదని తేలిన తర్వాత (మరియు ఇది వాస్తవానికి ఉపయోగకరంగా ఉందని ప్రజలు గ్రహించిన తర్వాత) ఆ సెంటిమెంట్ క్షీణించింది.

చివరికి స్వీకరించబడిన టైప్ హింట్ సింటాక్స్ ఆ సమయంలో mypy మద్దతు ఇచ్చిన దానికి చాలా పోలి ఉంటుంది. PEP 484 3.5లో పైథాన్ 2015తో విడుదల చేయబడింది. పైథాన్ ఇప్పుడు డైనమిక్‌గా టైప్ చేయబడిన భాష కాదు. నేను ఈ సంఘటనను పైథాన్ చరిత్రలో ఒక ముఖ్యమైన మైలురాయిగా భావించాలనుకుంటున్నాను.

వలస ప్రారంభం

2015 చివరిలో, డ్రాప్‌బాక్స్ మైపీపై పని చేయడానికి ముగ్గురు వ్యక్తుల బృందాన్ని సృష్టించింది. వారిలో గైడో వాన్ రోసమ్, గ్రెగ్ ప్రైస్ మరియు డేవిడ్ ఫిషర్ ఉన్నారు. ఆ క్షణం నుండి, పరిస్థితి చాలా త్వరగా అభివృద్ధి చెందడం ప్రారంభించింది. మైపీ వృద్ధికి మొదటి అడ్డంకి పనితీరు. నేను పైన సూచించినట్లుగా, ప్రాజెక్ట్ ప్రారంభ రోజులలో నేను mypy అమలును C లోకి అనువదించడం గురించి ఆలోచించాను, కానీ ఈ ఆలోచన ప్రస్తుతానికి జాబితా నుండి దాటవేయబడింది. మేము CPython ఇంటర్‌ప్రెటర్‌ని ఉపయోగించి సిస్టమ్‌ను అమలు చేయడంలో చిక్కుకున్నాము, ఇది mypy వంటి సాధనాల కోసం తగినంత వేగంగా లేదు. (JIT కంపైలర్‌తో ప్రత్యామ్నాయ పైథాన్ అమలు అయిన PyPy ప్రాజెక్ట్ కూడా మాకు సహాయం చేయలేదు.)

అదృష్టవశాత్తూ, ఇక్కడ కొన్ని అల్గారిథమిక్ మెరుగుదలలు మా సహాయానికి వచ్చాయి. మొదటి శక్తివంతమైన "యాక్సిలరేటర్" ఇంక్రిమెంటల్ చెకింగ్ అమలు. ఈ మెరుగుదల వెనుక ఆలోచన చాలా సులభం: mypy యొక్క మునుపటి రన్ నుండి అన్ని మాడ్యూల్ డిపెండెన్సీలు మారనట్లయితే, మేము డిపెండెన్సీలతో పని చేస్తున్నప్పుడు మునుపటి రన్ సమయంలో కాష్ చేసిన డేటాను ఉపయోగించవచ్చు. మేము సవరించిన ఫైల్‌లపై మరియు వాటిపై ఆధారపడిన ఫైల్‌లపై మాత్రమే టైప్ చెకింగ్ చేయాల్సి ఉంటుంది. Mypy ఇంకా కొంచెం ముందుకు వెళ్ళింది: మాడ్యూల్ యొక్క బాహ్య ఇంటర్‌ఫేస్ మారకపోతే, ఈ మాడ్యూల్‌ను దిగుమతి చేసుకున్న ఇతర మాడ్యూల్స్ మళ్లీ తనిఖీ చేయవలసిన అవసరం లేదని mypy భావించింది.

ఇప్పటికే ఉన్న కోడ్‌ను పెద్ద మొత్తంలో ఉల్లేఖించేటప్పుడు పెరుగుతున్న తనిఖీ మాకు చాలా సహాయపడింది. విషయం ఏమిటంటే, ఈ ప్రక్రియ సాధారణంగా మైపీ యొక్క అనేక పునరుక్తి పరుగులను కలిగి ఉంటుంది, ఎందుకంటే ఉల్లేఖనాలు క్రమంగా కోడ్‌కి జోడించబడతాయి మరియు క్రమంగా మెరుగుపడతాయి. mypy యొక్క మొదటి పరుగు ఇప్పటికీ చాలా నెమ్మదిగా ఉంది, ఎందుకంటే దీనికి తనిఖీ చేయడానికి చాలా డిపెండెన్సీలు ఉన్నాయి. అప్పుడు, పరిస్థితిని మెరుగుపరచడానికి, మేము రిమోట్ కాషింగ్ మెకానిజంను అమలు చేసాము. mypy స్థానిక కాష్ గడువు ముగిసినట్లు గుర్తించినట్లయితే, అది కేంద్రీకృత రిపోజిటరీ నుండి మొత్తం కోడ్‌బేస్ కోసం ప్రస్తుత కాష్ స్నాప్‌షాట్‌ను డౌన్‌లోడ్ చేస్తుంది. ఇది ఈ స్నాప్‌షాట్‌ని ఉపయోగించి ఇంక్రిమెంటల్ చెక్‌ని చేస్తుంది. ఇది మైపీ పనితీరును పెంచే దిశగా మాకు మరో పెద్ద అడుగు వేసింది.

ఇది డ్రాప్‌బాక్స్‌లో టైప్ చెకింగ్‌ను వేగంగా మరియు సహజంగా స్వీకరించిన కాలం. 2016 చివరి నాటికి, మేము ఇప్పటికే టైప్ ఉల్లేఖనాలతో సుమారుగా 420000 పైథాన్ కోడ్‌లను కలిగి ఉన్నాము. చాలా మంది వినియోగదారులు టైప్ చెకింగ్ పట్ల ఉత్సాహంగా ఉన్నారు. మరిన్ని అభివృద్ధి బృందాలు Dropbox mypyని ఉపయోగిస్తున్నాయి.

అప్పుడు అంతా బాగానే అనిపించింది, కానీ మనం ఇంకా చేయాల్సింది చాలా ఉంది. ప్రాజెక్ట్ యొక్క సమస్యాత్మక ప్రాంతాలను గుర్తించడానికి మరియు ముందుగా ఏ సమస్యలను పరిష్కరించాలో అర్థం చేసుకోవడానికి మేము కాలానుగుణ అంతర్గత వినియోగదారు సర్వేలను నిర్వహించడం ప్రారంభించాము (ఈ పద్ధతి ఇప్పటికీ కంపెనీలో ఉపయోగించబడుతోంది). చాలా ముఖ్యమైనది, స్పష్టంగా కనిపించినట్లుగా, రెండు పనులు. మొదట, మాకు కోడ్ యొక్క మరింత రకం కవరేజ్ అవసరం, రెండవది, వేగంగా పని చేయడానికి మాకు mypy అవసరం. మైపీని వేగవంతం చేయడానికి మరియు కంపెనీ ప్రాజెక్ట్‌లలో దానిని అమలు చేయడానికి మా పని ఇంకా పూర్తి కాలేదని ఖచ్చితంగా స్పష్టమైంది. మేము, ఈ రెండు పనుల ప్రాముఖ్యత గురించి పూర్తిగా తెలుసుకుని, వాటిని పరిష్కరించడం ప్రారంభించాము.

మరింత ఉత్పాదకత!

పెరుగుతున్న తనిఖీలు mypyని వేగవంతం చేశాయి, కానీ సాధనం ఇప్పటికీ తగినంత వేగంగా లేదు. అనేక ఇంక్రిమెంటల్ తనిఖీలు ఒక నిమిషం పాటు కొనసాగాయి. దీనికి కారణం చక్రీయ దిగుమతులు. ఇది బహుశా పైథాన్‌లో వ్రాసిన పెద్ద కోడ్‌బేస్‌లతో పనిచేసిన వారిని ఆశ్చర్యపరచదు. మేము వందలకొద్దీ మాడ్యూల్‌ల సెట్‌లను కలిగి ఉన్నాము, వాటిలో ప్రతి ఒక్కటి పరోక్షంగా మిగతావన్నీ దిగుమతి చేసుకున్నాయి. దిగుమతి లూప్‌లోని ఏదైనా ఫైల్ మార్చబడితే, mypy ఆ లూప్‌లోని అన్ని ఫైల్‌లను ప్రాసెస్ చేయాల్సి ఉంటుంది మరియు తరచుగా ఆ లూప్ నుండి మాడ్యూల్‌లను దిగుమతి చేసుకున్న ఏదైనా మాడ్యూల్‌లు. డ్రాప్‌బాక్స్‌లో చాలా ఇబ్బందులకు కారణమైన అప్రసిద్ధ "డిపెండెన్సీ టాంగిల్" అటువంటి చక్రం. ఈ నిర్మాణం అనేక వందల మాడ్యూల్‌లను కలిగి ఉన్న తర్వాత, అది దిగుమతి చేయబడినప్పుడు, ప్రత్యక్షంగా లేదా పరోక్షంగా, అనేక పరీక్షలు, ఇది ఉత్పత్తి కోడ్‌లో కూడా ఉపయోగించబడింది.

మేము వృత్తాకార డిపెండెన్సీలను "విడదీసే" అవకాశాన్ని పరిగణించాము, కానీ దీన్ని చేయడానికి మా వద్ద వనరులు లేవు. మాకు తెలియని చాలా ఎక్కువ కోడ్ ఉంది. ఫలితంగా, మేము ప్రత్యామ్నాయ విధానంతో ముందుకు వచ్చాము. "డిపెండెన్సీ టాంగిల్స్" సమక్షంలో కూడా mypy త్వరగా పని చేయాలని మేము నిర్ణయించుకున్నాము. మేము mypy డెమోన్‌ని ఉపయోగించి ఈ లక్ష్యాన్ని సాధించాము. డెమోన్ అనేది రెండు ఆసక్తికరమైన లక్షణాలను అమలు చేసే సర్వర్ ప్రక్రియ. మొదట, ఇది మెమరీలో మొత్తం కోడ్‌బేస్ గురించి సమాచారాన్ని నిల్వ చేస్తుంది. దీని అర్థం మీరు mypyని అమలు చేసిన ప్రతిసారీ, వేలకొద్దీ దిగుమతి చేసుకున్న డిపెండెన్సీలకు సంబంధించిన కాష్ చేసిన డేటాను మీరు లోడ్ చేయనవసరం లేదు. రెండవది, అతను జాగ్రత్తగా, చిన్న నిర్మాణ యూనిట్ల స్థాయిలో, విధులు మరియు ఇతర ఎంటిటీల మధ్య ఆధారపడటాన్ని విశ్లేషిస్తాడు. ఉదాహరణకు, ఫంక్షన్ అయితే foo ఒక ఫంక్షన్‌ని పిలుస్తుంది bar, అప్పుడు ఒక ఆధారపడటం ఉంది foo от bar. ఫైల్ మారినప్పుడు, డెమోన్ మొదట, ఐసోలేషన్‌లో, మార్చబడిన ఫైల్‌ను మాత్రమే ప్రాసెస్ చేస్తుంది. ఇది ఆ ఫైల్‌కు బాహ్యంగా కనిపించే మార్పులను చూస్తుంది, మార్చబడిన ఫంక్షన్ సంతకాలు వంటివి. డెమోన్ కేవలం సవరించిన ఫంక్షన్‌ను ఉపయోగించే ఫంక్షన్‌లను ఒకటికి రెండుసార్లు తనిఖీ చేయడానికి మాత్రమే దిగుమతుల గురించి వివరణాత్మక సమాచారాన్ని ఉపయోగిస్తుంది. సాధారణంగా, ఈ విధానంతో, మీరు చాలా తక్కువ ఫంక్షన్లను తనిఖీ చేయాలి.

వీటన్నింటిని అమలు చేయడం అంత సులభం కాదు, ఎందుకంటే అసలు mypy అమలు ఒక సమయంలో ఒక ఫైల్‌ను ప్రాసెస్ చేయడంపై ఎక్కువగా దృష్టి సారించింది. మేము అనేక సరిహద్దు రేఖ పరిస్థితులను ఎదుర్కోవలసి వచ్చింది, కోడ్‌లో ఏదైనా మార్పు వచ్చిన సందర్భాల్లో పదేపదే తనిఖీలు అవసరం. ఉదాహరణకు, ఒక తరగతికి కొత్త బేస్ క్లాస్ కేటాయించబడినప్పుడు ఇది జరుగుతుంది. మేము కోరుకున్నది చేసిన తర్వాత, మేము చాలా ఇంక్రిమెంటల్ చెక్‌ల అమలు సమయాన్ని కొన్ని సెకన్లకు తగ్గించగలిగాము. ఇది మాకు పెద్ద విజయంలా అనిపించింది.

మరింత ఉత్పాదకత!

నేను పైన చర్చించిన రిమోట్ కాషింగ్‌తో కలిసి, ప్రోగ్రామర్ టైప్ చెకింగ్‌ని తరచుగా నడుపుతున్నప్పుడు తలెత్తే సమస్యలను mypy డెమోన్ దాదాపు పూర్తిగా పరిష్కరించింది, తక్కువ సంఖ్యలో ఫైల్‌లకు మార్పులు చేస్తుంది. అయినప్పటికీ, తక్కువ అనుకూలమైన వినియోగ సందర్భంలో సిస్టమ్ పనితీరు ఇప్పటికీ సరైనది కాదు. mypy యొక్క క్లీన్ స్టార్టప్ 15 నిమిషాల కంటే ఎక్కువ సమయం పట్టవచ్చు. మరియు ఇది మనం సంతోషించే దానికంటే చాలా ఎక్కువ. ప్రోగ్రామర్లు కొత్త కోడ్ రాయడం మరియు ఇప్పటికే ఉన్న కోడ్‌కు ఉల్లేఖనాలను జోడించడం కొనసాగించడంతో ప్రతి వారం పరిస్థితి మరింత దిగజారింది. మా వినియోగదారులు మరింత పనితీరు కోసం ఇప్పటికీ ఆకలితో ఉన్నారు, కానీ మేము వారిని మార్గమధ్యంలో కలుసుకున్నందుకు సంతోషిస్తున్నాము.

మైపీకి సంబంధించి మునుపటి ఆలోచనలలో ఒకదానికి తిరిగి రావాలని మేము నిర్ణయించుకున్నాము. అవి, పైథాన్ కోడ్‌ని C కోడ్‌గా మార్చడానికి. Cython (పైథాన్‌లో వ్రాసిన కోడ్‌ను C కోడ్‌లోకి అనువదించడానికి మిమ్మల్ని అనుమతించే సిస్టమ్)తో ప్రయోగాలు చేయడం మాకు కనిపించే వేగాన్ని అందించలేదు, కాబట్టి మేము మా స్వంత కంపైలర్‌ను వ్రాయాలనే ఆలోచనను పునరుద్ధరించాలని నిర్ణయించుకున్నాము. mypy కోడ్‌బేస్ (పైథాన్‌లో వ్రాయబడింది) ఇప్పటికే అవసరమైన అన్ని రకాల ఉల్లేఖనాలను కలిగి ఉన్నందున, సిస్టమ్‌ను వేగవంతం చేయడానికి ఈ ఉల్లేఖనాలను ఉపయోగించడానికి ప్రయత్నించడం విలువైనదని మేము భావించాము. ఈ ఆలోచనను పరీక్షించడానికి నేను త్వరగా ఒక నమూనాను సృష్టించాను. ఇది వివిధ మైక్రో-బెంచ్‌మార్క్‌లపై పనితీరులో 10 రెట్లు ఎక్కువ పెరుగుదలను చూపించింది. సైథాన్‌ని ఉపయోగించి పైథాన్ మాడ్యూల్‌లను సి మాడ్యూల్‌లకు కంపైల్ చేయడం మరియు టైప్ ఉల్లేఖనాలను రన్-టైమ్ టైప్ చెక్‌లుగా మార్చడం మా ఆలోచన (సాధారణంగా టైప్ ఉల్లేఖనాలు రన్-టైమ్‌లో విస్మరించబడతాయి మరియు టైప్ చెకింగ్ సిస్టమ్‌ల ద్వారా మాత్రమే ఉపయోగించబడతాయి). మేము వాస్తవానికి పైథాన్ నుండి మైపీ అమలును స్థిరంగా టైప్ చేయడానికి రూపొందించబడిన భాషలోకి అనువదించాలని ప్లాన్ చేసాము, అది ఖచ్చితంగా పైథాన్ లాగా కనిపిస్తుంది (మరియు, చాలా వరకు, పని చేస్తుంది). (ఈ రకమైన క్రాస్-లాంగ్వేజ్ మైగ్రేషన్ మైపీ ప్రాజెక్ట్ యొక్క సంప్రదాయంగా మారింది. అసలు మైపీ అమలు అలోర్‌లో వ్రాయబడింది, అప్పుడు జావా మరియు పైథాన్‌ల వాక్యనిర్మాణ హైబ్రిడ్ ఉంది).

ప్రాజెక్ట్ నిర్వహణ సామర్థ్యాలను కోల్పోకుండా ఉండటానికి CPython పొడిగింపు APIపై దృష్టి కేంద్రీకరించడం కీలకం. మేము mypyకి అవసరమైన వర్చువల్ మెషీన్ లేదా ఏ లైబ్రరీలను అమలు చేయాల్సిన అవసరం లేదు. అదనంగా, మేము ఇప్పటికీ మొత్తం పైథాన్ పర్యావరణ వ్యవస్థ మరియు అన్ని సాధనాలకు (పైటెస్ట్ వంటివి) యాక్సెస్ కలిగి ఉంటాము. దీని అర్థం మేము అభివృద్ధి సమయంలో అన్వయించబడిన పైథాన్ కోడ్‌ని ఉపయోగించడం కొనసాగించగలము, కోడ్ కంపైల్ చేయడానికి వేచి ఉండకుండా, కోడ్ మార్పులు చేయడం మరియు దానిని పరీక్షించడం వంటి అత్యంత వేగవంతమైన నమూనాతో పని చేయడం కొనసాగించవచ్చు. మేము మాట్లాడటానికి, రెండు కుర్చీలపై కూర్చొని గొప్ప పని చేస్తున్నట్లు అనిపించింది మరియు మేము దానిని ఇష్టపడ్డాము.

మేము mypyc అని పిలిచే కంపైలర్ (రకాలు విశ్లేషించడానికి ఇది mypyని ఫ్రంట్-ఎండ్‌గా ఉపయోగిస్తుంది కాబట్టి) చాలా విజయవంతమైన ప్రాజెక్ట్‌గా మారింది. మొత్తంమీద, మేము కాషింగ్ లేకుండా తరచుగా mypy పరుగుల కోసం సుమారు 4x వేగాన్ని సాధించాము. mypyc ప్రాజెక్ట్ యొక్క ప్రధాన భాగాన్ని అభివృద్ధి చేయడానికి మైఖేల్ సుల్లివన్, ఇవాన్ లెవ్కివ్స్కీ, హ్యూ హాన్ మరియు నాతో కూడిన చిన్న బృందం 4 క్యాలెండర్ నెలలు పట్టింది. ఈ పని మొత్తం mypyని తిరిగి వ్రాయడానికి అవసరమైన దానికంటే చాలా తక్కువగా ఉంది, ఉదాహరణకు, C++ లేదా Goలో. మరియు మేము ప్రాజెక్ట్‌ను మరొక భాషలో తిరిగి వ్రాసేటప్పుడు చేయవలసిన దానికంటే చాలా తక్కువ మార్పులు చేయాల్సి వచ్చింది. ఇతర డ్రాప్‌బాక్స్ ప్రోగ్రామర్లు తమ కోడ్‌ను కంపైల్ చేయడానికి మరియు వేగవంతం చేయడానికి దీనిని ఉపయోగించగలిగే స్థాయికి మేము mypycని తీసుకురాగలమని కూడా మేము ఆశిస్తున్నాము.

ఈ స్థాయి పనితీరును సాధించడానికి, మేము కొన్ని ఆసక్తికరమైన ఇంజనీరింగ్ పరిష్కారాలను వర్తింపజేయాలి. అందువలన, కంపైలర్ వేగవంతమైన, తక్కువ-స్థాయి C నిర్మాణాలను ఉపయోగించడం ద్వారా అనేక కార్యకలాపాలను వేగవంతం చేయవచ్చు.ఉదాహరణకు, కంపైల్డ్ ఫంక్షన్ కాల్ C ఫంక్షన్ కాల్‌గా అనువదించబడుతుంది. మరియు అటువంటి కాల్ ఇంటర్‌ప్రెటెడ్ ఫంక్షన్‌కి కాల్ చేయడం కంటే చాలా వేగంగా ఉంటుంది. డిక్షనరీ లుకప్‌ల వంటి కొన్ని కార్యకలాపాలు ఇప్పటికీ CPython నుండి సాధారణ C-API కాల్‌లను ఉపయోగిస్తూనే ఉన్నాయి, ఇవి కంపైల్ చేయబడినప్పుడు స్వల్పంగా మాత్రమే వేగంగా ఉంటాయి. మేము వివరణ ద్వారా సృష్టించబడిన సిస్టమ్‌పై అదనపు లోడ్‌ను తొలగించగలిగాము, అయితే ఈ సందర్భంలో ఇది పనితీరు పరంగా చిన్న లాభం మాత్రమే ఇచ్చింది.

అత్యంత సాధారణ "నెమ్మది" కార్యకలాపాలను గుర్తించడానికి, మేము కోడ్ ప్రొఫైలింగ్‌ని నిర్వహించాము. ఈ డేటాతో సాయుధమై, మేము mypycని సర్దుబాటు చేయడానికి ప్రయత్నించాము, తద్వారా ఇది అటువంటి కార్యకలాపాల కోసం వేగవంతమైన C కోడ్‌ని ఉత్పత్తి చేస్తుంది లేదా వేగవంతమైన ఆపరేషన్‌లను ఉపయోగించి సంబంధిత పైథాన్ కోడ్‌ను తిరిగి వ్రాయండి (మరియు కొన్నిసార్లు మేము దానికి లేదా ఇతర సమస్యకు తగినంత సరళమైన పరిష్కారాన్ని కలిగి ఉండవు) . కంపైలర్ స్వయంచాలకంగా అదే పరివర్తనను నిర్వహించడం కంటే పైథాన్ కోడ్‌ను తిరిగి వ్రాయడం సమస్యకు సులభమైన పరిష్కారం. దీర్ఘకాలంలో, మేము ఈ అనేక పరివర్తనలను ఆటోమేట్ చేయాలనుకుంటున్నాము, కానీ ఆ సమయంలో మేము తక్కువ ప్రయత్నంతో మైపీని వేగవంతం చేయడంపై దృష్టి సారించాము. మరియు మేము, ఈ లక్ష్యం వైపు కదులుతూ, అనేక మూలలను కత్తిరించాము.

కొనసాగించాలి…

ప్రియమైన పాఠకులారా! మీరు మైపీ ప్రాజెక్ట్ ఉనికి గురించి తెలుసుకున్నప్పుడు దాని గురించి మీ అభిప్రాయాలు ఏమిటి?

పైథాన్ కోడ్ యొక్క 4 మిలియన్ లైన్‌లను టైప్ చెకింగ్ చేయడానికి మార్గం. 2 వ భాగము
పైథాన్ కోడ్ యొక్క 4 మిలియన్ లైన్‌లను టైప్ చెకింగ్ చేయడానికి మార్గం. 2 వ భాగము

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి