वर्तमान में, जब रेगुलर एक्सप्रेशन संकलित किए जाते हैं, तो परिणाम कैश किया जाता है ताकि यदि वही रेगेक्स फिर से संकलित किया जाता है, तो इसे कैश से पुनः प्राप्त किया जाता है और कोई अतिरिक्त प्रयास आवश्यक नहीं होता। यह कैश 100 एंट्रीज तक सपोर्ट करता है। एक बार 100वीं एंट्री पहुंचने पर, कैश क्लियर हो जाता है और एक नया संकलन होना चाहिए।
कैशिंग का उद्देश्य फंक्शन के औसत कॉल समय को कम करना है। _cache में अधिक जानकारी रखने और इसे क्लियर करने के बजाय पारिंग करने से जुड़ा ओवरहेड उस औसत कॉल समय को बढ़ा देगा। _cache.clear() कॉल जल्दी पूरा हो जाएगा, और भले ही कैश खो जाए, यह कैश स्टेट को बनाए रखने और सीमा पहुंचने पर कैश से व्यक्तिगत तत्वों को हटाने के ओवरहेड होने से बेहतर है।
कैश दक्षता की गणना करते समय कुछ बातों पर विचार करना चाहिए -
- कैश हिट्स पर औसत कॉल समय (बहुत छोटा)
- कैश मिस पर औसत कॉल समय (लंबा)
- कैश हिट्स की आवृत्ति (काफी असामान्य)
- कैश क्लियर या प्रून होने पर कॉल समय (काफी असामान्य)
रेगुलर एक्सप्रेशन कैश को _cache.clear() का उपयोग करके तब क्लियर किया जाता है जब यह _MAXCACHE एंट्रीज तक पहुंच जाता है।