શું આપણે શુદ્ધ ઓપ્ટિમાઇઝેશનની કળા ગુમાવી દીધી છે?
શરૂઆતના એન્જિનિયરો ખૂબ જ મર્યાદિત ક્ષમતા સાથે કામ કરતા હતા. Apollo Guidance Computer માં માત્ર 2KB RAM હતી. દરેક બીટ (bit) મહત્વની હતી. દરેક CPU સાયકલ અત્યંત જરૂરી હતી.
આજે, આપણી પાસે ગીગાબાઇટ્સ (gigabytes) મેમરી છે. આપણે ઘણીવાર વધુ હાર્ડવેર ઉમેરીને સમસ્યાઓનો ઉકેલ લાવીએ છીએ. જો કોડ ધીમો અથવા ભારે હોય, તો આપણે વધુ RAM ઉમેરીએ છીએ. આ આદતને કારણે આપણે શુદ્ધ ઓપ્ટિમાઇઝેશનની કુશળતા ગુમાવી રહ્યા છીએ.
તમે મર્યાદાઓ (constraints) વિશે વિચારીને વધુ સારું સોફ્ટવેર લખી શકો છો.
જુઓ કે તમે Python માં મોટી ટેક્સ્ટ ફાઇલ કેવી રીતે પ્રોસેસ કરો છો.
સામાન્ય રીત: ઘણા ડેવલપર્સ એકસાથે આખી ફાઇલ મેમરીમાં વાંચી લે છે.
- તમે
f.readlines()નો ઉપયોગ કરો છો. - આ તમારી RAM માં એક લિસ્ટમાં દરેક લાઇન લોડ કરે છે.
- જો તમારી ફાઇલ 10GB હોય, તો તમારે 10GB RAM ની જરૂર પડશે.
- આ અભિગમ નાના સર્વર્સ અથવા મર્યાદિત ઉપકરણો પર નિષ્ફળ જાય છે.
ઓપ્ટિમાઇઝ્ડ રીત: ફાઇલને એક સમયે એક લાઇન તરીકે પ્રોસેસ કરો.
- તમે સીધા ફાઇલ ઓબ્જેક્ટ પર ઇટરેટ (iterate) કરો છો.
- Python એક લાઇન વાંચે છે, તેને પ્રોસેસ કરે છે, અને પછી બીજી લાઇન પર જાય છે.
- તમારો મેમરી વપરાશ ઓછો અને સ્થિર રહે છે.
- ફાઇલ 1MB હોય કે 100GB, તેનાથી કોઈ ફરક પડતો નથી.
આ તફાવત એન્જિનિયરિંગ ફિલોસોફી વિશે છે.
વધુ રિસોર્સિસ ઉમેરવા એ કામચલાઉ ઉકેલ છે. તે નાજુક (fragile) સોફ્ટવેર બનાવે છે. તમારી ડિઝાઇનને ચલાવવા માટે મર્યાદાઓનો ઉપયોગ કરવાથી મજબૂત (robust) સોફ્ટવેર બને છે.
ઓપ્ટિમાઇઝેશન માત્ર ઝડપ વિશે નથી. તે તમારા રિસોર્સિસ પ્રત્યે સભાન રહેવા વિશે છે.
જ્યારે તમે કોડ લખો છો, ત્યારે તમારી જાતને પૂછો:
- આ કેટલી મેમરી વાપરે છે?
- જો ડેટા દસ ગણો વધી જાય તો શું આ કામ કરશે?
- શું હું ખરાબ કોડને છુપાવવા માટે મોંઘા હાર્ડવેર પર નિર્ભર રહી રહ્યો છું?
વધુ સારું સોફ્ટવેર શિસ્તમાંથી આવે છે.
સ્ત્રોત: https://dev.to/prabashanadev/have-we-lost-the-art-of-pure-optimization-31b9