Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Require dry-validation only when schema is specified #253

Conversation

jrafanie
Copy link
Contributor

If you never specify a schema, you're still paying the penalty of loading a
rather large library.

By waiting until someone specifies a schema to validate, we can reduce the
config require time and object allocations by ~30% if you don't specify an
optional schema. On my mac, bundle console is 30 MB before this change and
around 23 MB after.

Before:
$ time be ruby -e "require 'config'; puts GC.stat[:total_allocated_objects]"
347010
bundle exec ruby -e "require 'config'; puts GC.stat[:total_allocated_objects] 0.54s user 0.17s system 98% cpu 0.722 total

After:
$ time be ruby -e "require 'config'; puts GC.stat[:total_allocated_objects]"
224764
bundle exec ruby -e "require 'config'; puts GC.stat[:total_allocated_objects] 0.38s user 0.12s system 98% cpu 0.508 total

If you never specify a schema, you're still paying the penalty of loading a
rather large library.

By waiting until someone specifies a schema to validate, we can reduce the
config require time and object allocations by ~30% if you don't specify an
optional schema. On my mac, bundle console is 30 MB before this change and
around 23 MB after.

Before:
$ time be ruby -e "require 'config'; puts GC.stat[:total_allocated_objects]"
347010
bundle exec ruby -e "require 'config'; puts GC.stat[:total_allocated_objects]  0.54s user 0.17s system 98% cpu 0.722 total

After:
$ time be ruby -e "require 'config'; puts GC.stat[:total_allocated_objects]"
224764
bundle exec ruby -e "require 'config'; puts GC.stat[:total_allocated_objects]  0.38s user 0.12s system 98% cpu 0.508 total
@jrafanie jrafanie force-pushed the delay_require_dry_validation_until_opted_in branch from d18bfda to 2efdf62 Compare November 12, 2019 23:10
@jrafanie jrafanie changed the title Delay the optional/expensive dry-validition require Delay the optional/expensive dry-validation require Nov 12, 2019
@jrafanie
Copy link
Contributor Author

The rails 4.2 test failures are fixed in #254

Fryguy
Fryguy previously approved these changes Jan 2, 2020
Copy link
Member

@Fryguy Fryguy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@pkuczynski pkuczynski changed the title Delay the optional/expensive dry-validation require Require dry-validation only when schema is specified Jan 4, 2020
@pkuczynski pkuczynski added this to the 2.2.0 milestone Jan 4, 2020
@pkuczynski
Copy link
Member

Looks great! Thanks!

@pkuczynski pkuczynski merged commit fc57ca6 into rubyconfig:master Jan 4, 2020
@jrafanie jrafanie deleted the delay_require_dry_validation_until_opted_in branch January 6, 2020 21:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

None yet

3 participants