Memoization: A Powerful Technique in JavaScript

Javid Salim
2 min readJun 18, 2023

--

Read in English

JavaScript müsahibələri dünyasında Memoization anlayışı tez-tez ortaya çıxır və tərtibatçıları problem həll etmə bacarıqlarını nümayiş etdirməyə yönəlmiş bir sualdır. Təxminən 7–8 dəqiqəlik müsahibə vaxtı sərf edərək probleminin effektiv həllini təqdim etmək, xüsusən də orta səviyyədə olan bir tərtibatçının səriştəsinin güclü göstəricisi ola bilər. Memoization bir vaxtlar əl ilə həyata keçirilən bir texnika olsa da, React kimi müasir frameworklar və kitabxanalar bu problemi asanlıqla həll etmək üçün öz hook və mexanizmlərini təqdim etdilər. Bununla belə, bu məqalədə biz yalnız bu güclü texnikanın JavaScript ilə tətbiqinə diqqət yetirəcəyik. Memoizasiya dünyasına getməyə hazır olun və peşəkar kimi performansı optimallaşdırmağı öyrənin.

Nümunəyə baxaq:

kod xüsusi açar yaratma yanaşmasından istifadə edərək memoizing funksiyasının həyata keçirilməsini nümayiş etdirir. Budur kodun izahı:

Yadda saxlanılan funksiyanın neçə dəfə çağırıldığını izləmək üçün sayğac dəyişəni işə salınır.

Arqument kimi geri çağırış funksiyasını qəbul edən Memo funksiyası müəyyən edilmişdir.

Memo funksiyasının daxilində keşləşdirilmiş nəticələri saxlamaq üçün cash obyekti yaradılır. Bu obyekt keşlənmiş dəyərlər üçün unikal açar-dəyər cütlərini saxlayacaq.

Memo funksiyası …args spread operatorundan istifadə edərək istənilən sayda arqumentləri qəbul edən yeni funksiya qaytarır.

Qaytarılan funksiya daxilində açar args.join(‘-’) metodundan istifadə edərək arqumentləri defislə birləşdirərək yaradılır.

Funksiya açarın cash obyektində artıq olub olmadığını yoxlayır. Əgər belədirsə, o, həmin açarla əlaqəli keşlənmiş dəyəri qaytarır.

Əgər açar cash obyektində tapılmazsa, o, geri çağırış (…args) istifadə edərək təqdim edilmiş arqumentlərlə orijinal geri çağırış funksiyasını işə salır. Nəticə açarla cash obyektinə təyin edilir.

Hər dəfə orijinal geri çağırış funksiyası çağırıldıqda sayğac dəyişəni artırılır.

Nəhayət, açara uyğun keşlənmiş nəticə qaytarılır.

Təqdim olunan nümunə eyni arqumentlərlə yadda saxlanılan funksiyaya çoxsaylı çağırışları nümayiş etdirir. Funksiya lazımsız hesablamalardan qaçaraq dublikat call üçün keşlənmiş nəticəni alır. Sayğac dəyişəni orijinal funksiyanın çağırış sayını izləmək üçün də istifadə olunur, bu funksiya çağırışlarının azaldılmasında memoizingin faydalarını göstərir.

Nəzərə alın ki, bu tətbiq memoizing funksiyaya ötürülən arqumentlərin seriallaşdırıla biləcəyini və heç bir problem olmadan defisdən istifadə etməklə birləşdirilə və ya sətirə çevrilə bilən olaraq nəzərdə tutur.

--

--