Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
When objects are sideloaded multiple times, serialize them only once
To achieve this, we make the following change when sideloading: Instead of serializing associations and discarding duplicate *hashes*, we memorize the *objects* (records) that we have already serialized, and only serialize those that are new. This change is mostly transparent, and brings down serialization time from 3.1 seconds to 1.0 seconds on my set of sample data. There is one change in the behavior: If you sideload the same object multiple times, and it yields different hashes, like so: embed :ids, include: true has_many :comments has_many :recent_comments, root: comments, serializer: CommentShortSerializer then previously, it would be included multiple times, whereas now, the first hash wins. (I haven't actually tested this.) I don't know that either option is preferable. It's not covered by the test suite, and I think it's an edge case that is OK to ignore entirely.
- Loading branch information
Showing
4 changed files
with
45 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters