Serializer listener performance - anonymous class not serializable #1780
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.
In #1307, an anonymous class was introduced to fix a performance problem but it introduced another.
In these
ItemNormalizers
:https://github.com/api-platform/core/blob/master/src/Hal/Serializer/ItemNormalizer.php#L219
https://github.com/api-platform/core/blob/master/src/JsonApi/Serializer/ItemNormalizer.php#L337
the context is serialized to produce a cache key, but anonymous classes are not serializable: https://3v4l.org/tvMGa.
This effectively disables the intended caching in the HAL and Json API item normalizers.
Blackfire comparison for a HAL endpoint returning 500 items
https://blackfire.io/profiles/compare/8994c0b0-8a09-4ae7-9c38-dd8ad72ecc22/graph
11% improvement.