⚡ Bolt: [performance improvement] Avoid deep clones in OpenAPI parsing#54
⚡ Bolt: [performance improvement] Avoid deep clones in OpenAPI parsing#54cloudesize67-cmd wants to merge 1 commit into
Conversation
Co-authored-by: cloudesize67-cmd <237356855+cloudesize67-cmd@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:
Replaced
serde_yaml::from_valueandserde_json::from_valuewithT::deserializeinxdk-openapi/src/parser.rs. Instead of cloning the intermediateValuesub-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::Valueorserde_json::Valuenested AST to satisfyfrom_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 areDeserializeOwned.📊 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-generatorto ensure functionality,make checkfor 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