⚡ Bolt: [performance improvement] Cache FAQ YAML loading#581
Conversation
Implemented `_load_faqs` with `@functools.cache` to avoid repeated parsing of the `faqs.yml` file every time `build_faqs` is called. Used `copy.deepcopy` to prevent callers from modifying the global cached object. Co-authored-by: alinelena <3306823+alinelena@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
💡 What: Extracted
yaml.safe_load(f)into a separate function_load_faqs()decorated with@functools.cache. Replaced the direct file read inbuild_faqswith a call to_load_faqs(), followed bycopy.deepcopy()to prevent unintended mutations of the cached data.🎯 Why:
build_faqsruns every time the FAQ component is rendered. Reading and parsingfaqs.ymlon every invocation is an unnecessary source of disk I/O and parsing overhead for static data.📊 Impact: Eliminates repeated I/O operations and
yaml.safe_loadcalls, significantly speeding up the generation of the FAQ component while remaining safe via a defensive deep copy.🔬 Measurement: Verified with the test suite that component building functionality operates correctly, and linting confirms the patch is stylistically sound.
PR created automatically by Jules for task 18433256623000223384 started by @alinelena