Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ฉันจะล้างแคชนิพจน์ทั่วไปใน Python ได้อย่างไร


ในปัจจุบัน เมื่อมีการคอมไพล์นิพจน์ทั่วไป ผลลัพธ์จะถูกแคชไว้ ดังนั้นหากมีการคอมไพล์ regex เดียวกันอีกครั้ง ไฟล์นั้นจะถูกดึงมาจากแคชและไม่ต้องใช้ความพยายามพิเศษใดๆ แคชนี้รองรับได้ถึง 100 รายการ เมื่อถึงรายการที่ 100 แคชจะถูกล้างและคอมไพล์ใหม่จะต้องเกิดขึ้น

วัตถุประสงค์ของการแคชคือเพื่อลดเวลาการโทรเฉลี่ยของฟังก์ชัน ค่าโสหุ้ยที่เกี่ยวข้องกับการเก็บรักษาข้อมูลเพิ่มเติมใน _cache และการจับคู่ข้อมูลแทนที่จะล้างข้อมูล จะทำให้เวลาในการโทรเฉลี่ยเพิ่มขึ้น การเรียก _cache.clear() จะเสร็จสิ้นอย่างรวดเร็ว และแม้ว่าแคชจะหายไป วิธีนี้ดีกว่าการรักษาสถานะแคชและมีค่าใช้จ่ายในการลบแต่ละองค์ประกอบออกจากแคชเมื่อถึงขีดจำกัด

มีบางสิ่งที่ต้องคำนึงถึงเมื่อคำนวณประสิทธิภาพของแคช −

  • เวลาโทรโดยเฉลี่ยของแคช Hit (สั้นมาก)

  • เวลาโทรเฉลี่ยบนแคชพลาด (นานกว่า)

  • ความถี่ของการเข้าถึงแคช (ค่อนข้างผิดปกติ)

  • เวลาโทรเมื่อแคชถูกล้างหรือตัดแต่ง (ค่อนข้างผิดปกติ)

แคชนิพจน์ทั่วไปจะถูกล้างโดยใช้ _cache.clear() เมื่อถึง _MAXCACHE ของรายการ