Skip to content

⚡ Bolt: [performance improvement] Avoid deep clones in OpenAPI parsing#54

Draft
cloudesize67-cmd wants to merge 1 commit into
mainfrom
bolt-opt-serde-clone-6318719079981015089
Draft

⚡ Bolt: [performance improvement] Avoid deep clones in OpenAPI parsing#54
cloudesize67-cmd wants to merge 1 commit into
mainfrom
bolt-opt-serde-clone-6318719079981015089

Conversation

@cloudesize67-cmd
Copy link
Copy Markdown
Owner

💡 What:
Replaced serde_yaml::from_value and serde_json::from_value with T::deserialize in xdk-openapi/src/parser.rs. Instead of cloning the intermediate Value sub-trees with .clone(), it now takes a reference (&value).

🎯 Why:
When extracting individual OpenAPI components (like Schema, Parameter, SecurityScheme), the previous code cloned the entire serde_yaml::Value or serde_json::Value nested AST to satisfy from_value's move requirement. This creates immense memory allocation overhead and slows down parsing of large OpenAPI specs. T::deserialize(&value) effectively skips this without introducing borrow lifetime issues since the destination structures are DeserializeOwned.

📊 Impact:
Reduces peak memory allocation significantly and speeds up parser execution by completely eliminating redundant O(N) AST deep-clones during the first pass context loading.

🔬 Measurement:
Tested via make test-generator to ensure functionality, make check for standards compliance, and verified successful SDK generation. No behavior changes, only faster and lighter component parsing.


PR created automatically by Jules for task 6318719079981015089 started by @cloudesize67-cmd

Co-authored-by: cloudesize67-cmd <237356855+cloudesize67-cmd@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown

👋 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 @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant