বর্তমানে, যখন রেগুলার এক্সপ্রেশন কম্পাইল করা হয়, ফলাফলটি ক্যাশ করা হয় যাতে একই রেজেক্স আবার কম্পাইল করলে ক্যাশ থেক রিট্রিভ করা যায় এবং এক্সট্রা এফর্ট লাগে না। এই ক্যাশ ১০০ এন্ট্রি পর্যন্ত সাপোর্ট করে। ১০০-এ এন্ট্রি পৌঁছালে ক্যাশ ক্লিয়ার হয়ে যায় এবং নতুন কম্পাইল করতে হয়।
ক্যাশিং এর উদ্দেশ্য হলো ফাংশনের এভারেজ কল টাইম কমানো। _cache-এ বেশি ইনফো রাখার ওভারহেড এবং লিমিট পৌঁছালে সেগুলো রিমুভ করার পরিবর্তে ক্লিয়ার করায় এভারেজ কল টাইম বাড়ে। _cache.clear() কল দ্রুত কমপ্লিট হয়, এবং ক্যাশ হারানোর পরেও এটি পছন্দনীয় ক্যাশ স্টেট মেইনটেইন করা এবং লিমিট পৌঁছালে আপডেট করার ওভারহেডের চেয়ে।
ক্যাশ ইফিশিয়েন্সি ক্যালকুলেট করার সময় কিছু বিষয় চিন্তা করতে হয় -
- এভারেজ কল টাইম অন ক্যাশ হিট (খুব ছোট)
- এভারেজ কল টাইম অন ক্যাশ মিস (বড়)
- ক্যাশ হিটের ফ্রিকোয়েন্সি (নিরব কমন)
- ক্যাশ ক্লিয়ার বা প্রুন করার সময় কল টাইম (নিরব কমন)
রেগুলার এক্সপ্রেশন ক্যাশ _cache.clear() ব্যবহার করে ক্লিয়ার করা হয় যখন সেটি _MAXCACHE এন্ট্রি পৌঁছায়।