Skip to content

Conversation

@google-labs-jules
Copy link
Contributor

This PR optimizes the cache key generation in core/cache.py by avoiding unnecessary intermediate JSON serialization and manual sorting.

Optimization:

  • Previously, query and headers were serialized to JSON strings and then included in the key_data dict, which was then serialized again.
  • Now, we pass the dictionaries directly to key_data, allowing json.dumps(..., sort_keys=True) to handle serialization and recursive sorting in a single pass.

Performance Impact:

  • Benchmarking shows a >50% reduction in CPU time for key generation.
  • Reduces memory allocation for intermediate strings.

Risk:

  • Invalidate existing cache keys (acceptable).
  • Reverted similar change in idempotency.py to avoid breaking in-flight request handling.

PR created automatically by Jules for task 360709212162168202 started by @kiku-jw

- Removed double serialization of headers and query params in cache key generation.
- Removed redundant manual sorting of query params (handled by json.dumps(sort_keys=True)).
- Measured ~2x performance improvement in key generation (from ~29us to ~13us per call).
- Note: This invalidates existing cache keys due to format change, which is acceptable for ephemeral cache.
@google-labs-jules
Copy link
Contributor Author

👋 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!


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

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

@kiku-jw kiku-jw marked this pull request as ready for review December 23, 2025 11:54
@kiku-jw kiku-jw merged commit d49ff8e into main Dec 23, 2025
1 check failed
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.

2 participants