summaryrefslogtreecommitdiff
path: root/lib/bundler/resolver.rb
diff options
context:
space:
mode:
authorDov Murik <dov.murik@gmail.com>2014-10-07 14:44:01 -0400
committerDov Murik <dov.murik@gmail.com>2014-10-10 10:08:47 -0400
commite50642fd257d3d2a3233c454a763fd92db1fd680 (patch)
tree29c79a3ba7e2404088dd790cde995964339cae96 /lib/bundler/resolver.rb
parent7f5b2cf21038ed9de1100b248080ced958b5d3cf (diff)
downloadbundler-e50642fd257d3d2a3233c454a763fd92db1fd680.tar.gz
Performance: pre-calculate expensive `prerelease?` values during resolve
Diffstat (limited to '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..6529228449 100644
--- a/lib/bundler/resolver.rb
+++ b/lib/bundler/resolver.rb
@@ -160,6 +160,7 @@ module Bundler
def start(reqs)
activated = {}
@gems_size = Hash[reqs.map { |r| [r, gems_size(r)] }]
+ @prereleases = Set.new(reqs.select { |r| r.requirement.prerelease? })
resolve(reqs, activated)
end
@@ -264,7 +265,7 @@ module Bundler
reqs = reqs.sort_by do |a|
[ activated[a.name] ? 0 : 1,
- a.requirement.prerelease? ? 0 : 1,
+ @prereleases.include?(a) ? 0 : 1,
@errors[a.name] ? 0 : 1,
activated[a.name] ? 0 : @gems_size[a] ]
end