diff options
author | Paco Guzman <pacoguzmanp@gmail.com> | 2016-06-27 16:06:04 +0200 |
---|---|---|
committer | Paco Guzman <pacoguzmanp@gmail.com> | 2016-06-27 16:06:04 +0200 |
commit | 85b21487808fd18a0d4b984103af62f098448922 (patch) | |
tree | 63163b60cf9126ab6a09bce13564fad472e9953c /app/models/project.rb | |
parent | 6acdf1fcb56c1564c4ba3649bdc74bd039adf576 (diff) | |
download | gitlab-ce-proper-default-issue-tracker.tar.gz |
Avoid open/close transaction in each gon helper callproper-default-issue-tracker
require 'benchmark/ips'
Project.first # To load database things
GitlabIssueTrackerService.first # To load database things
Benchmark.ips do |x|
x.config(:time => 5, :warmup => 2)
x.report("current") do
Project.new.default_issue_tracker.to_param
end
x.report("") do
Project.default_issue_tracker_service_name
end
x.compare!
end
Calculating -------------------------------------
current 3.000 i/100ms
22.466k i/100ms
-------------------------------------------------
current 39.875 (±15.0%) i/s - 192.000
1.444M (±14.8%) i/s - 6.605M
Comparison:
: 1443612.8 i/s
current: 39.9 i/s - 36203.16x slower
Diffstat (limited to 'app/models/project.rb')
-rw-r--r-- | app/models/project.rb | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index ca3bc04e2dd..d9d572e81c3 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -372,6 +372,14 @@ class Project < ActiveRecord::Base def remove_gitlab_exports! Gitlab::Popen.popen(%W(find #{Gitlab::ImportExport.storage_path} -not -path #{Gitlab::ImportExport.storage_path} -mmin +1440 -delete)) end + + def default_issue_tracker_service + :gitlab_issue_tracker_service + end + + def default_issue_tracker_service_name + reflect_on_association(default_issue_tracker_service).klass::NAME + end end def team @@ -583,8 +591,12 @@ class Project < ActiveRecord::Base get_issue(issue_id) end + def default_issue_tracker_service + self.class.default_issue_tracker_service + end + def default_issue_tracker - gitlab_issue_tracker_service || create_gitlab_issue_tracker_service + association(default_issue_tracker_service).target || association(default_issue_tracker_service).create end def issues_tracker |