சுயவிவரக் கருவிகள் மூலம் உங்கள் பைதான் குறியீட்டை எவ்வாறு மேம்படுத்துவது

Cuyavivarak Karuvikal Mulam Unkal Paitan Kuriyittai Evvaru Mempatuttuvatu



பைதான் குறியீடு செயல்திறனை மேம்படுத்துவது டெவலப்பர்களுக்கு மதிப்புமிக்க திறமையாகும். இந்த விஷயத்தில் விவரக்குறிப்பு கருவிகள் அவசியம் மற்றும் குறியீடு கட்டுப்பாடுகள் மற்றும் திறமையின்மைகளைக் கண்டறிவதற்கு உதவுகிறது. பைதான் நிரல்களை மேம்படுத்த சுயவிவரக் கருவிகளைப் பயன்படுத்துவதற்கான வழிகளை இந்தக் கட்டுரை ஆராய்கிறது. செயல்படுத்தும் நேரங்கள், நினைவக நுகர்வு மற்றும் அதிர்வெண்களின் செயல்பாட்டு அழைப்பு ஆகியவற்றின் அளவீட்டில் தேர்ச்சி பெறுவதன் மூலம், நாம் துல்லியமாக மேம்படுத்த முடியும்.

விவரக்குறிப்பு கருவிகள் மூலம் பைதான் குறியீட்டை மேம்படுத்துதல்

விவரக்குறிப்புக் கருவிகள் மூலம் பைதான் குறியீட்டை மேம்படுத்துவதற்கு Google Colab ஐ அமைப்பது, Google Colab சூழலை அமைப்பதன் மூலம் தொடங்குகிறோம். நாங்கள் Colabக்கு புதியவர்கள் என்றால், இது ஜூபிடர் நோட்புக்குகள் மற்றும் பைதான் லைப்ரரிகளின் வரம்பிற்கு அணுகலை வழங்கும் இன்றியமையாத, சக்திவாய்ந்த கிளவுட் அடிப்படையிலான தளமாகும். (https://colab.research.google.com/) மற்றும் புதிய பைதான் நோட்புக்கை உருவாக்குவதன் மூலம் Colab ஐ அணுகுவோம்.

விவரக்குறிப்பு நூலகங்களை இறக்குமதி செய்யவும்

எங்கள் மேம்படுத்தல் நூலகங்களின் விவரக்குறிப்புகளின் திறமையான பயன்பாட்டை நம்பியுள்ளது. இந்த சூழலில் இரண்டு முக்கியமான நூலகங்கள் cProfile மற்றும் line_profiler ஆகும்.







இறக்குமதி cProfile

இறக்குமதி line_profiler

'cProfile' லைப்ரரி என்பது குறியீட்டு விவரக்குறிப்புக்கான உள்ளமைக்கப்பட்ட பைதான் கருவியாகும், அதே சமயம் 'line_profiler' என்பது ஒரு வெளிப்புற தொகுப்பாகும், இது கோட் வரியை வரியாக பகுப்பாய்வு செய்து இன்னும் ஆழமாக செல்ல அனுமதிக்கிறது.



இந்த கட்டத்தில், ஒரு சுழல்நிலை செயல்பாட்டைப் பயன்படுத்தி ஃபைபோனச்சி வரிசையை கணக்கிடுவதற்கு மாதிரி பைதான் ஸ்கிரிப்டை உருவாக்குகிறோம். இந்த செயல்முறையை இன்னும் விரிவாக ஆராய்வோம். ஃபைபோனச்சி வரிசை என்பது எண்களின் தொகுப்பாகும், அதில் ஒவ்வொரு அடுத்தடுத்த எண்ணும் அதற்கு முன் உள்ள இரண்டின் கூட்டுத்தொகையாகும். இது வழக்கமாக 0 மற்றும் 1 இல் தொடங்குகிறது, எனவே வரிசை 0, 1, 1, 2, 3, 5, 8, 13, 21, மற்றும் பல. இது ஒரு கணித வரிசையாகும், இது பொதுவாக அதன் சுழல் இயல்பு காரணமாக நிரலாக்கத்தில் ஒரு உதாரணமாகப் பயன்படுத்தப்படுகிறது.



சுழல்நிலை Fibonacci செயல்பாட்டில் 'Fibonacci' எனப்படும் பைதான் செயல்பாட்டை வரையறுக்கிறோம். இந்தச் சார்பு ஒரு “n” முழு எண்ணை அதன் வாதமாக எடுத்துக்கொள்கிறது, இது நாம் கணக்கிட விரும்பும் Fibonacci வரிசையில் உள்ள நிலையைக் குறிக்கிறது. ஃபைபோனச்சி வரிசையில் ஐந்தாவது எண்ணைக் கண்டுபிடிக்க விரும்புகிறோம், உதாரணமாக, 'n' 5க்கு சமமாக இருந்தால்.





def ஃபைபோனச்சி ( n ) :

அடுத்து, நாங்கள் ஒரு அடிப்படை வழக்கை நிறுவுகிறோம். மறுநிகழ்வில் ஒரு அடிப்படை வழக்கு என்பது அழைப்புகளை நிறுத்தும் மற்றும் முன்னரே தீர்மானிக்கப்பட்ட மதிப்பை வழங்கும் ஒரு காட்சியாகும். Fibonacci வரிசையில், “n” 0 அல்லது 1 ஆக இருக்கும் போது, ​​முடிவு நமக்கு முன்பே தெரியும். 0வது மற்றும் 1வது Fibonacci எண்கள் முறையே 0 மற்றும் 1 ஆகும்.

என்றால் n <= 1 :

திரும்ப n

இந்த 'if' அறிக்கையானது 'n' 1 ஐ விட குறைவாக உள்ளதா அல்லது சமமாக உள்ளதா என்பதை தீர்மானிக்கிறது. அப்படியானால், 'n' தானே திரும்பும், ஏனெனில் மேலும் மறுநிகழ்வு தேவையில்லை.



சுழல்நிலை கணக்கீடு

'n' 1 ஐ விட அதிகமாக இருந்தால், நாம் சுழல்நிலை கணக்கீட்டிற்கு செல்கிறோம். இந்த நிலையில், “(n-1)”வது மற்றும் “(n-2)”வது ஃபைபோனச்சி எண்களை கூட்டி “n”-வது Fibonacci எண்ணைக் கண்டுபிடிக்க வேண்டும். செயல்பாட்டிற்குள் இரண்டு சுழல்நிலை அழைப்புகளைச் செய்வதன் மூலம் இதை அடைகிறோம்.

வேறு :

திரும்ப ஃபைபோனச்சி ( n - 1 ) + ஃபைபோனச்சி ( n - 2 )

இங்கே, “fibonacci(n – 1)” ஆனது “(n-1)”வது Fibonacci எண்ணையும், “fibonacci(n – 2)” ஆனது “(n-2)”வது Fibonacci எண்ணையும் கணக்கிடுகிறது. 'n' நிலையில் விரும்பிய Fibonacci எண்ணைப் பெற இந்த இரண்டு மதிப்புகளைச் சேர்க்கிறோம்.

சுருக்கமாக, இந்த 'ஃபைபோனச்சி' செயல்பாடு, சிக்கலை சிறிய துணை சிக்கல்களாக உடைப்பதன் மூலம் ஃபைபோனச்சி எண்களை மீண்டும் மீண்டும் கணக்கிடுகிறது. இது அடிப்படை நிகழ்வுகளை (0 அல்லது 1) அடையும் வரை சுழல்நிலை அழைப்புகளைச் செய்கிறது, அறியப்பட்ட மதிப்புகளை வழங்கும். வேறு எந்த “n”க்கும், “(n-1)” மற்றும் “(n-2)”க்கான இரண்டு சுழல்நிலை அழைப்புகளின் முடிவுகளைத் தொகுத்து ஃபைபோனச்சி எண்ணைக் கணக்கிடுகிறது.

ஃபைபோனச்சி எண்களைக் கணக்கிடுவதற்கு இந்தச் செயலாக்கம் நேரடியானது என்றாலும், இது மிகவும் திறமையானது அல்ல. பிந்தைய படிகளில், சிறந்த செயலாக்க நேரங்களுக்கு அதன் செயல்திறன் கட்டுப்பாடுகளைக் கண்டறிந்து மேம்படுத்த, சுயவிவரக் கருவிகளைப் பயன்படுத்துவோம்.

CPprofile உடன் குறியீட்டை விவரித்தல்

இப்போது, ​​'cProfile' ஐப் பயன்படுத்துவதன் மூலம் எங்கள் 'fibonacci' செயல்பாட்டை விவரப்படுத்துகிறோம். இந்த விவரக்குறிப்புப் பயிற்சியானது, ஒவ்வொரு செயல்பாட்டு அழைப்பின் நேரத்தையும் பற்றிய நுண்ணறிவுகளை வழங்குகிறது.

cprofiler = cProfile. சுயவிவரம் ( )

cprofiler. செயல்படுத்த ( )

விளைவாக = ஃபைபோனச்சி ( 30 )

cprofiler. முடக்கு ( )

cprofiler. அச்சு_புள்ளிவிவரங்கள் ( வகைபடுத்து = 'ஒட்டுமொத்த' )

இந்தப் பிரிவில், 'cProfile' பொருளைத் துவக்குகிறோம், விவரக்குறிப்பைச் செயல்படுத்துகிறோம், 'n=30' உடன் 'fibonacci' செயல்பாட்டைக் கோருகிறோம், விவரக்குறிப்பை செயலிழக்கச் செய்கிறோம் மற்றும் ஒட்டுமொத்த நேரத்தின்படி வரிசைப்படுத்தப்பட்ட புள்ளிவிவரங்களைக் காண்பிக்கிறோம். இந்த ஆரம்ப விவரக்குறிப்பு எந்தச் செயல்பாடுகள் அதிக நேரத்தைச் செலவழிக்கிறது என்பதைப் பற்றிய உயர்நிலைக் கண்ணோட்டத்தை நமக்கு வழங்குகிறது.

! pip நிறுவல் line_profiler

இறக்குமதி cProfile

இறக்குமதி line_profiler

def ஃபைபோனச்சி ( n ) :

என்றால் n <= 1 :

திரும்ப n

வேறு :

திரும்ப ஃபைபோனச்சி ( n - 1 ) + ஃபைபோனச்சி ( n - 2 )

cprofiler = cProfile. சுயவிவரம் ( )

cprofiler. செயல்படுத்த ( )

விளைவாக = ஃபைபோனச்சி ( 30 )

cprofiler. முடக்கு ( )

cprofiler. அச்சு_புள்ளிவிவரங்கள் ( வகைபடுத்து = 'ஒட்டுமொத்த' )

மேலும் விரிவான பகுப்பாய்விற்கு line_profiler மூலம் கோட் லைனை ப்ரோஃபைல் செய்ய, 'line_profiler' ஐப் பயன்படுத்தி எங்கள் குறியீடு வரியை வரியாகப் பிரிக்கிறோம். “line_profiler” ஐப் பயன்படுத்துவதற்கு முன், Colab களஞ்சியத்தில் தொகுப்பை நிறுவ வேண்டும்.

! pip நிறுவல் line_profiler

இப்போது எங்களிடம் “line_profiler” தயாராக உள்ளது, அதை எங்கள் “fibonacci” செயல்பாட்டிற்குப் பயன்படுத்தலாம்:

%load_ext line_profiler

def ஃபைபோனச்சி ( n ) :

என்றால் n <= 1 :

திரும்ப n

வேறு :

திரும்ப ஃபைபோனச்சி ( n - 1 ) + ஃபைபோனச்சி ( n - 2 )

%lprun -f fibonacci fibonacci ( 30 )

இந்தத் துணுக்கை “line_profiler” நீட்டிப்பை ஏற்றுவதன் மூலம் தொடங்குகிறது, எங்கள் “fibonacci” செயல்பாட்டை வரையறுக்கிறது, மேலும் இறுதியாக “n=30” உடன் “fibonacci” செயல்பாட்டை சுயவிவரப்படுத்த “%lprun” ஐப் பயன்படுத்துகிறது. இது செயல்படுத்தும் நேரங்களின் வரிக்கு வரி பிரிவை வழங்குகிறது, எங்கள் குறியீடு அதன் ஆதாரங்களை எங்கு செலவிடுகிறது என்பதை துல்லியமாக அழிக்கிறது.

முடிவுகளை பகுப்பாய்வு செய்ய விவரக்குறிப்பு கருவிகளை இயக்கிய பிறகு, இது எங்கள் குறியீட்டின் செயல்திறன் பண்புகளைக் காட்டும் புள்ளிவிவரங்களின் வரிசையுடன் வழங்கப்படும். இந்த புள்ளிவிவரங்கள் ஒவ்வொரு செயல்பாட்டிற்குள்ளும் செலவழிக்கப்பட்ட மொத்த நேரத்தையும் ஒவ்வொரு கோட்டின் கால அளவையும் உள்ளடக்கியது. எடுத்துக்காட்டாக, Fibonacci செயல்பாடு ஒரே மாதிரியான மதிப்புகளை பல முறை மீண்டும் கணக்கிடுவதற்கு இன்னும் சிறிது நேரத்தை முதலீடு செய்கிறது என்பதை நாம் வேறுபடுத்தி அறியலாம். இது தேவையற்ற கணக்கீடு மற்றும் இது ஒரு தெளிவான பகுதியாகும், இதில் உகப்பாக்கம் பயன்படுத்தப்படலாம், நினைவகத்தின் மூலமாகவோ அல்லது மீண்டும் செயல்படும் அல்காரிதம்களைப் பயன்படுத்துவதன் மூலமாகவோ.

இப்போது, ​​எங்கள் Fibonacci செயல்பாட்டில் சாத்தியமான மேம்படுத்தலைக் கண்டறிந்த இடத்தில் மேம்படுத்தல்களைச் செய்கிறோம். செயல்பாடு ஒரே ஃபைபோனச்சி எண்களை பலமுறை மீண்டும் கணக்கிடுவதை நாங்கள் கவனித்தோம், இதன் விளைவாக தேவையற்ற பணிநீக்கம் மற்றும் மெதுவாக செயல்படுத்தும் நேரம்.

இதை மேம்படுத்த, நினைவூட்டலை செயல்படுத்துகிறோம். நினைவூட்டல் என்பது ஒரு தேர்வுமுறை நுட்பமாகும், இது முன்னர் கணக்கிடப்பட்ட முடிவுகளை (இந்த விஷயத்தில், ஃபைபோனச்சி எண்கள்) சேமித்து, அவற்றை மீண்டும் கணக்கிடுவதற்குப் பதிலாக தேவைப்படும் போது அவற்றை மீண்டும் பயன்படுத்துகிறது. இது தேவையற்ற கணக்கீடுகளைக் குறைக்கிறது மற்றும் செயல்திறனை மேம்படுத்துகிறது, குறிப்பாக ஃபைபோனச்சி வரிசை போன்ற சுழல்நிலை செயல்பாடுகளுக்கு.

எங்கள் Fibonacci செயல்பாட்டில் நினைவாற்றலைச் செயல்படுத்த, பின்வரும் குறியீட்டை எழுதுகிறோம்:

# கணக்கிடப்பட்ட ஃபைபோனச்சி எண்களைச் சேமிப்பதற்கான அகராதி
fib_cache = { }
def ஃபைபோனச்சி ( n ) :
என்றால் n <= 1 :
திரும்ப n
# முடிவு ஏற்கனவே தற்காலிகமாக சேமிக்கப்பட்டுள்ளதா என சரிபார்க்கவும்
என்றால் n உள்ளே fib_cache:
திரும்ப fib_cache [ n ]
வேறு :
# முடிவைக் கணக்கிட்டு தேக்ககப்படுத்தவும்
fib_cache [ n ] = ஃபைபோனச்சி ( n - 1 ) + ஃபைபோனச்சி ( n - 2 )
திரும்ப fib_cache [ n ] ,

'fibonacci' செயல்பாட்டின் இந்த மாற்றியமைக்கப்பட்ட பதிப்பில், முன்னர் கணக்கிடப்பட்ட Fibonacci எண்களை சேமிக்க 'fib_cache' அகராதியை அறிமுகப்படுத்துகிறோம். ஃபைபோனச்சி எண்ணைக் கணக்கிடுவதற்கு முன், அது ஏற்கனவே தற்காலிக சேமிப்பில் உள்ளதா என்பதைச் சரிபார்க்கவும். அது இருந்தால், தற்காலிகச் சேமிப்பு முடிவை நாங்கள் திருப்பி விடுகிறோம். வேறு எந்த சந்தர்ப்பத்திலும், நாங்கள் அதை கணக்கிட்டு, தற்காலிக சேமிப்பில் வைத்து, பின்னர் அதை திரும்பப் பெறுகிறோம்.

விவரக்குறிப்பு மற்றும் மேம்படுத்தலை மீண்டும் செய்யவும்

தேர்வுமுறையை (எங்கள் விஷயத்தில் நினைவூட்டல்) செயல்படுத்திய பிறகு, எங்கள் மாற்றங்களின் தாக்கத்தை அறியவும், குறியீட்டின் செயல்திறனை நாங்கள் மேம்படுத்தியுள்ளோம் என்பதை உறுதிப்படுத்தவும் விவரக்குறிப்பு செயல்முறையை மீண்டும் செய்வது முக்கியம்.

உகப்பாக்கத்திற்குப் பிறகு விவரக்குறிப்பு

மேம்படுத்தப்பட்ட Fibonacci செயல்பாட்டை சுயவிவரப்படுத்த, 'cProfile' மற்றும் 'line_profiler' போன்ற அதே விவரக்குறிப்பு கருவிகளைப் பயன்படுத்தலாம். புதிய விவரக்குறிப்பு முடிவுகளை முந்தையவற்றுடன் ஒப்பிடுவதன் மூலம், எங்கள் தேர்வுமுறையின் செயல்திறனை அளவிட முடியும்.

'cProfile' ஐப் பயன்படுத்தி உகந்த 'fibonacci' செயல்பாட்டை எவ்வாறு விவரிப்பது என்பது இங்கே:

cprofiler = cProfile. சுயவிவரம் ( )

cprofiler. செயல்படுத்த ( )

விளைவாக = ஃபைபோனச்சி ( 30 )

cprofiler. முடக்கு ( )

cprofiler. அச்சு_புள்ளிவிவரங்கள் ( வகைபடுத்து = 'ஒட்டுமொத்த' )

“line_profiler” ஐப் பயன்படுத்தி, அதை வரிவாரியாக விவரிப்போம்:

%lprun -f fibonacci fibonacci ( 30 )

குறியீடு:

# கணக்கிடப்பட்ட ஃபைபோனச்சி எண்களைச் சேமிப்பதற்கான அகராதி
fib_cache = { }

def ஃபைபோனச்சி ( n ) :
என்றால் n <= 1 :
திரும்ப n
# முடிவு ஏற்கனவே தற்காலிகமாக சேமிக்கப்பட்டுள்ளதா என சரிபார்க்கவும்
என்றால் n உள்ளே fib_cache:
திரும்ப fib_cache [ n ]
வேறு :
# முடிவைக் கணக்கிட்டு தேக்ககப்படுத்தவும்
fib_cache [ n ] = ஃபைபோனச்சி ( n - 1 ) + ஃபைபோனச்சி ( n - 2 )
திரும்ப fib_cache [ n ]
cprofiler = cProfile. சுயவிவரம் ( )
cprofiler. செயல்படுத்த ( )

விளைவாக = ஃபைபோனச்சி ( 30 )

cprofiler. முடக்கு ( )
cprofiler. அச்சு_புள்ளிவிவரங்கள் ( வகைபடுத்து = 'ஒட்டுமொத்த' )
%lprun -f fibonacci fibonacci ( 30 )

உகப்பாக்கத்திற்குப் பிந்தைய விவரக்குறிப்பு முடிவுகளை பகுப்பாய்வு செய்ய, செயல்படுத்தும் நேரம் கணிசமாகக் குறைக்கப்படும், குறிப்பாக பெரிய 'n' மதிப்புகளுக்கு. நினைவூட்டல் காரணமாக, செயல்பாடு இப்போது ஃபைபோனச்சி எண்களை மீண்டும் கணக்கிடுவதற்கு மிகக் குறைந்த நேரத்தை செலவிடுவதை நாங்கள் கவனிக்கிறோம்.

தேர்வுமுறை செயல்பாட்டில் இந்த படிகள் அவசியம். உகப்பாக்கம் என்பது விவரக்குறிப்பிலிருந்து பெறப்பட்ட அவதானிப்புகளின் அடிப்படையில் எங்கள் குறியீட்டில் தகவலறிந்த மாற்றங்களைச் செய்வதை உள்ளடக்குகிறது, அதே நேரத்தில் சுயவிவரத்தை மீண்டும் மீண்டும் செய்வது எங்கள் மேம்படுத்தல்கள் எதிர்பார்த்த செயல்திறன் மேம்பாடுகளை வழங்குவதை உறுதி செய்கிறது. மறுமுறை விவரக்குறிப்பு, மேம்படுத்துதல் மற்றும் சரிபார்த்தல் மூலம், சிறந்த செயல்திறனை வழங்குவதற்கும் எங்கள் பயன்பாடுகளின் பயனர் அனுபவத்தை மேம்படுத்துவதற்கும் எங்கள் பைதான் குறியீட்டை நன்றாக மாற்றியமைக்கலாம்.

முடிவுரை

இந்தக் கட்டுரையில், Google Colab சூழலில் உள்ள விவரக்குறிப்புக் கருவிகளைப் பயன்படுத்தி பைதான் குறியீட்டை மேம்படுத்திய உதாரணத்தைப் பற்றி விவாதித்தோம். அமைப்புடன் எடுத்துக்காட்டைத் துவக்கினோம், அத்தியாவசிய விவரக்குறிப்பு நூலகங்களை இறக்குமதி செய்தோம், மாதிரி குறியீடுகளை எழுதினோம், 'cProfile' மற்றும் 'line_profiler' இரண்டையும் பயன்படுத்தி சுயவிவரப்படுத்தினோம், முடிவுகளைக் கணக்கிட்டோம், மேம்படுத்தல்களைப் பயன்படுத்தினோம், மேலும் குறியீட்டின் செயல்திறனை மீண்டும் செம்மைப்படுத்தினோம்.