diff options
author | Dov Murik <dov.murik@gmail.com> | 2014-10-20 13:29:36 -0400 |
---|---|---|
committer | Andre Arko <andre@arko.net> | 2014-10-20 10:47:49 -0700 |
commit | ed8ad7dac4f89d283c1e7a4c0662cd88ce75e613 (patch) | |
tree | 7137ab698bf90a794b5be6e1d5c727f35e6884de | |
parent | 02002f87b4f9190b7f3b66b1f8fa81af935fd75c (diff) | |
download | bundler-ed8ad7dac4f89d283c1e7a4c0662cd88ce75e613.tar.gz |
Performance: lazily memoize expensive `prerelease?` values during resolve
Conflicts:
lib/bundler/resolver.rb
-rw-r--r-- | lib/bundler/resolver.rb | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb index 7c4a10482e..218a69969d 100644 --- a/lib/bundler/resolver.rb +++ b/lib/bundler/resolver.rb @@ -140,6 +140,7 @@ module Bundler @index = index @deps_for = {} @missing_gems = Hash.new(0) + @prereleases_cache = Hash.new { |h,k| h[k] = k.prerelease? } @source_requirements = source_requirements @iteration_counter = 0 @started_at = Time.now @@ -264,7 +265,7 @@ module Bundler reqs = reqs.sort_by do |a| [ activated[a.name] ? 0 : 1, - a.requirement.prerelease? ? 0 : 1, + @prereleases_cache[a.requirement] ? 0 : 1, @errors[a.name] ? 0 : 1, activated[a.name] ? 0 : @gems_size[a] ] end |