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.
I've been working on using json-schema to validate all incoming JSON data for an API I'm writing; it's functional, but can be pretty slow for complex endpoints (50ms+). I did some profiling to narrow it down to hitting
JSON::Schema#initialize
a lot. The change in #180 helped a bit, but the core problem remains that we constantly re-create Schema instances.I plan to add either
Schema#inner_schemas['#/some/path/fragment']
, or even just directly register them intoJSON::Validator.schemas
; the variousAttribute
validation classes can then fetch from that, and only create a new schema on miss.The code in this PR adds rspec for now, only because I couldn't come up with any more reasonable means of testing this right now. I've not touched
lib
at all yet.