reduce overhead of expressions etag check #1344
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Before it would compute the etag by computing a sha1 hash
of a string representation of the sorted expression list.
With 100k+ expressions that is quite expensive both in
terms of the memory use and CPU.
This change introduces a cache for the encoded entity so
it can be returned directly if there are frequent calls
within a short period. The ETag is computed over the
encoded and compressed response using CRC32. This reduces
the memory and CPU overhead considerably.