Skip to content

caching CSR attributes#14444

Merged
alex merged 2 commits intopyca:mainfrom
abbra:perf/csr-caching
Mar 8, 2026
Merged

caching CSR attributes#14444
alex merged 2 commits intopyca:mainfrom
abbra:perf/csr-caching

Conversation

@abbra
Copy link
Contributor

@abbra abbra commented Mar 8, 2026

Part 3 of #14441

Also adds a benchmark of property access.

abbra and others added 2 commits March 8, 2026 15:39
The existing load benchmarks create a fresh object each iteration, so
the cache is always cold and caching optimisations show no benefit there.
Add benchmarks that construct the object once and then repeatedly call
the getter, exercising the warm-cache path:

  Certificate : subject, issuer, public_key(),
                signature_hash_algorithm, signature_algorithm_oid
  CRL         : issuer, serial-number lookup (hit and miss)
  OCSPRequest : issuer_name_hash, issuer_key_hash,
                hash_algorithm, serial_number (all in one bench)
  OCSPResponse: issuer_key_hash, serial_number,
                signature_hash_algorithm (all in one bench)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Alexander Bokovoy <abokovoy@redhat.com>
Wrap the attributes getter in PyOnceLock so the expensive loop over
ASN.1 attributes (OID conversion, PyBytes allocation, Attributes
construction) runs at most once per CertificateSigningRequest object.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Alexander Bokovoy <abokovoy@redhat.com>
@abbra
Copy link
Contributor Author

abbra commented Mar 8, 2026

I have few more PRs outstanding to complete property caching optimizations. They all depend on each other, thus on this one as well.

@alex alex merged commit b6c92eb into pyca:main Mar 8, 2026
67 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants