summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDov Murik <dov.murik@gmail.com>2014-10-20 13:29:36 -0400
committerAndre Arko <andre@arko.net>2014-10-20 10:47:49 -0700
commited8ad7dac4f89d283c1e7a4c0662cd88ce75e613 (patch)
tree7137ab698bf90a794b5be6e1d5c727f35e6884de
parent02002f87b4f9190b7f3b66b1f8fa81af935fd75c (diff)
downloadbundler-ed8ad7dac4f89d283c1e7a4c0662cd88ce75e613.tar.gz
Performance: lazily memoize expensive `prerelease?` values during resolve
Conflicts: lib/bundler/resolver.rb
-rw-r--r--lib/bundler/resolver.rb3
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