Match or exceed v1 performance#580
Open
jhollinger wants to merge 40 commits into
Open
Conversation
cf26f1a to
43f7db0
Compare
98b34e4 to
5841499
Compare
e83ea61 to
b3d8412
Compare
…tion for collections) Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
…r inclusion is changed Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
…value as 2nd arg (so that ctx is always first arg) Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
b5543f8 to
a5cf165
Compare
…result hook to run, so that it's easier for other extensions to decorate the result before it's JSONified Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
…eprint's views from V2 Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
…d Procs Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
a5cf165 to
c065be7
Compare
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
00a3abd to
c15f238
Compare
- No longer need `use!` since `use` is now positional. - The DSL now builds a series of nodes which are evaled later. - Replace `view`'s `empty` arg with the `exclude_all` DSL method. - Options and extensions are now blocks (so they can interact properly with other DSL nodes) Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
1175e4e to
86cf98c
Compare
…DSL methods Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
…artials can be inherited Signed-off-by: Jordan Hollinger <jordan.hollinger@procore.com>
b9d79a6 to
2dc9670
Compare
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
After V1's recent perf improvements, V2's perf was no longer looking so good. These changes make V2 competitive again:
Perf varies with the number of fields, objects, and collections. It can also vary between the top-level serialization being a collection or object (collections are faster b/c some overhead is shared across loops). Use of extensions also caries some overhead (none were used in the measurements below).
One thing we lost here is the ability to have extensions that are initialized per-render. I think it's possible to add again, but it will be more complicated, so IMHO we should wait until someone needs it.
Some other changes include:
fieldsDSL method to receive options and a blockfromoption tosource(reads better)around_blueprint_initto modify blueprint options and field details (previously it could only change field order or filter out fields)