നമുക്ക് ശുദ്ധമായ ഒപ്റ്റിമൈസേഷൻ എന്ന കല നഷ്ടപ്പെട്ടോ?
ആദ്യകാല എഞ്ചിനീയർമാർ വളരെ പരിമിതമായ സാഹചര്യങ്ങളിലാണ് പ്രവർത്തിച്ചിരുന്നത്. അപ്പോളോ ഗൈഡൻസ് കമ്പ്യൂട്ടറിൽ വെറും 2KB RAM മാത്രമേ ഉണ്ടായിരുന്നുള്ളൂ. ഓരോ ബിറ്റും പ്രധാനമായിരുന്നു. ഓരോ CPU സൈക്കിളും നിർണ്ണായകമായിരുന്നു.
ഇന്ന് നമുക്ക് ഗിഗാബൈറ്റുകൾ കണക്കിന് മെമ്മറി ലഭ്യമാണ്. കൂടുതൽ ഹാർഡ്വെയർ ചേർത്ത് നാം പലപ്പോഴും പ്രശ്നങ്ങൾ പരിഹരിക്കാറുണ്ട്. കോഡ് സാവധാനത്തിലോ അല്ലെങ്കിൽ ഭാരമോ ഉള്ളതാണെങ്കിൽ, നമ്മൾ കൂടുതൽ RAM ചേർക്കുന്നു. ഈ ശീലം ശുദ്ധമായ ഒപ്റ്റിമൈസേഷൻ ചെയ്യാനുള്ള നമ്മുടെ കഴിവിനെ ഇല്ലാതാക്കുന്നു.
പരിമിതികളെക്കുറിച്ച് ചിന്തിക്കുന്നതിലൂടെ നിങ്ങൾക്ക് മികച്ച സോഫ്റ്റ്വെയർ നിർമ്മിക്കാൻ കഴിയും.
Python-ൽ ഒരു വലിയ ടെക്സ്റ്റ് ഫയൽ നിങ്ങൾ എങ്ങനെ പ്രോസസ്സ് ചെയ്യുന്നു എന്ന് നോക്കൂ.
സാധാരണ രീതി: പല ഡെവലപ്പർമാരും ഒരു ഫയൽ മുഴുവനായി ഒരേസമയം മെമ്മറിയിലേക്ക് വായിക്കുന്നു.
- നിങ്ങൾ
f.readlines()ഉപയോഗിക്കുന്നു. - ഇത് ഓരോ വരിയും നിങ്ങളുടെ RAM-ലെ ഒരു ലിസ്റ്റിലേക്ക് ലോഡ് ചെയ്യുന്നു.
- നിങ്ങളുടെ ഫയൽ 10GB ആണെങ്കിൽ, നിങ്ങൾക്ക് 10GB RAM ആവശ്യമാണ്.
- ചെറിയ സെർവറുകളിലോ പരിമിതമായ ഉപകരണങ്ങളിലോ ഈ രീതി പരാജയപ്പെടും.
ഒപ്റ്റിമൈസ് ചെയ്ത രീതി: ഫയൽ ഓരോ വരിയായി പ്രോസസ്സ് ചെയ്യുക.
- നിങ്ങൾ ഫയൽ ഒബ്ജക്റ്റിലൂടെ നേരിട്ട് ഇറ്ററേറ്റ് (iterate) ചെയ്യുന്നു.
- Python ഒരു വരി വായിക്കുന്നു, അത് പ്രോസസ്സ് ചെയ്യുന്നു, തുടർന്ന് അടുത്ത വരിയിലേക്ക് നീങ്ങുന്നു.
- നിങ്ങളുടെ മെമ്മറി ഉപയോഗം കുറഞ്ഞതും സ്ഥിരവുമായിരിക്കും.
- ഫയൽ 1MB ആണോ അതോ 100GB ആണോ എന്നത് പ്രശ്നമല്ല.
ഈ വ്യത്യാസം എഞ്ചിനീയറിംഗ് ഫിലോസഫിയെക്കുറിച്ചാണ്.
കൂടുതൽ റിസോഴ്സുകൾ ചേർക്കുന്നത് ഒരു താൽക്കാലിക പരിഹാരം മാത്രമാണ്. ഇത് ദുർബലമായ സോഫ്റ്റ്വെയറുകൾക്ക് കാരണമാകുന്നു. പരിമിതികളെ അടിസ്ഥാനമാക്കി നിങ്ങളുടെ ഡിസൈൻ രൂപപ്പെടുത്തുന്നത് കരുത്തുറ്റ സോഫ്റ്റ്വെയറുകൾ നിർമ്മിക്കാൻ സഹായിക്കുന്നു.
ഒപ്റ്റിമൈസേഷൻ എന്നത് വേഗതയെക്കുറിച്ച് മാത്രമല്ല. അത് നിങ്ങളുടെ റിസോഴ്സുകളെക്കുറിച്ച് ബോധവാന്മാരായിരിക്കുക എന്നതിനെക്കുറിച്ചുകൂടിയാണ്.
നിങ്ങൾ കോഡ് എഴുതുമ്പോൾ സ്വയം ചോദിക്കുക:
- ഇത് എത്രത്തോളം മെമ്മറി ഉപയോഗിക്കുന്നു?
- ഡാറ്റ പത്തിരട്ടി വർദ്ധിച്ചാൽ ഇത് പ്രവർത്തിക്കുമോ?
- മോശം കോഡ് മറച്ചുവെക്കാൻ ഞാൻ വിലകൂടിയ ഹാർഡ്വെയറിനെ ആശ്രയിക്കുകയാണോ?
മികച്ച സോഫ്റ്റ്വെയർ ഉണ്ടാകുന്നത് അച്ചടക്കത്തിൽ നിന്നാണ്.
ഉറവിടം: https://dev.to/prabashanadev/have-we-lost-the-art-of-pure-optimization-31b9