summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-06-09 10:31:38 +0200
committerRémy Coutable <remy@rymai.me>2017-06-09 17:21:39 +0200
commitbe0a949a004a34015977bdbcfe24e3173cd3aba9 (patch)
tree78ce2ae5ce94aaa06fc53f52b4f5d1ab17cb1c95
parentef4ccb7e2676bf0fc3bf17c795b4ab0e0edc0821 (diff)
downloadgitlab-ce-29010-perf-bar.tar.gz
DRYed peek-pg/mysql2 views and update peek-rblineprof monkey-patch file29010-perf-bar
Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--app/views/peek/views/_mysql2.html.haml16
-rw-r--r--app/views/peek/views/_pg.html.haml16
-rw-r--r--app/views/peek/views/_sql.html.haml13
-rw-r--r--lib/peek/rblineprof/custom_controller_helpers.rb35
4 files changed, 33 insertions, 47 deletions
diff --git a/app/views/peek/views/_mysql2.html.haml b/app/views/peek/views/_mysql2.html.haml
index 5a58c719c73..ac811a10ef5 100644
--- a/app/views/peek/views/_mysql2.html.haml
+++ b/app/views/peek/views/_mysql2.html.haml
@@ -1,14 +1,4 @@
-%strong
- %a#peek-show-queries{ href: '#' }
- %span{ data: { defer_to: "#{view.defer_key}-duration" } }...
- \/
- %span{ data: { defer_to: "#{view.defer_key}-calls" } }...
-#modal-peek-pg-queries.modal{ tabindex: -1 }
- .modal-dialog
- #modal-peek-pg-queries-content.modal-content
- .modal-header
- %a.close{ href: "#", "data-dismiss" => "modal" } ×
- %h4
- SQL queries
- .modal-body{ data: { defer_to: "#{view.defer_key}-queries" } }...
+- local_assigns.fetch(:view)
+
+= render 'peek/views/sql', view: view
mysql
diff --git a/app/views/peek/views/_pg.html.haml b/app/views/peek/views/_pg.html.haml
index e38c07a6097..ee94c2f3274 100644
--- a/app/views/peek/views/_pg.html.haml
+++ b/app/views/peek/views/_pg.html.haml
@@ -1,14 +1,4 @@
-%strong
- %a#peek-show-queries{ href: '#' }
- %span{ data: { defer_to: "#{view.defer_key}-duration" } }...
- \/
- %span{ data: { defer_to: "#{view.defer_key}-calls" } }...
-#modal-peek-pg-queries.modal{ tabindex: -1 }
- .modal-dialog
- #modal-peek-pg-queries-content.modal-content
- .modal-header
- %a.close{ href: "#", "data-dismiss" => "modal" } ×
- %h4
- SQL queries
- .modal-body{ data: { defer_to: "#{view.defer_key}-queries" } }...
+- local_assigns.fetch(:view)
+
+= render 'peek/views/sql', view: view
pg
diff --git a/app/views/peek/views/_sql.html.haml b/app/views/peek/views/_sql.html.haml
new file mode 100644
index 00000000000..16fc010f66f
--- /dev/null
+++ b/app/views/peek/views/_sql.html.haml
@@ -0,0 +1,13 @@
+%strong
+ %a#peek-show-queries{ href: '#' }
+ %span{ data: { defer_to: "#{view.defer_key}-duration" } }...
+ \/
+ %span{ data: { defer_to: "#{view.defer_key}-calls" } }...
+#modal-peek-pg-queries.modal{ tabindex: -1 }
+ .modal-dialog
+ #modal-peek-pg-queries-content.modal-content
+ .modal-header
+ %a.close{ href: "#", "data-dismiss" => "modal" } ×
+ %h4
+ SQL queries
+ .modal-body{ data: { defer_to: "#{view.defer_key}-queries" } }...
diff --git a/lib/peek/rblineprof/custom_controller_helpers.rb b/lib/peek/rblineprof/custom_controller_helpers.rb
index 2ecda58c669..99f9c2c9b04 100644
--- a/lib/peek/rblineprof/custom_controller_helpers.rb
+++ b/lib/peek/rblineprof/custom_controller_helpers.rb
@@ -3,6 +3,8 @@ module Peek
module CustomControllerHelpers
extend ActiveSupport::Concern
+ # This will become useless once https://github.com/peek/peek-rblineprof/pull/5
+ # is merged
def pygmentize(file_name, code, lexer = nil)
if lexer.present?
Gitlab::Highlight.highlight(file_name, code)
@@ -11,7 +13,7 @@ module Peek
end
end
- # rubocop:disable Metrics/AbcSize
+ # rubocop:disable all
def inject_rblineprof
ret = nil
profile = lineprof(rblineprof_profiler_regex) do
@@ -26,43 +28,32 @@ module Peek
# Sort each file by the longest calculated time
per_file = profile.map do |file, lines|
- total, _child, excl, total_cpu, _child_cpu, excl_cpu = lines[0]
+ total, child, excl, total_cpu, child_cpu, excl_cpu = lines[0]
wall = summary == 'exclusive' ? excl : total
cpu = summary == 'exclusive' ? excl_cpu : total_cpu
idle = summary == 'exclusive' ? (excl - excl_cpu) : (total - total_cpu)
- sort_method =
- case sort
- when 'idle'
- idle
- when 'cpu'
- cpu
- else
- wall
- end
-
[
file, lines,
wall, cpu, idle,
- sort_method
+ sort == 'idle' ? idle : sort == 'cpu' ? cpu : wall
]
- end
- per_file = per_file.sort_by { |_a, _b, _c, _d, _e, f| -f }
+ end.sort_by{ |a,b,c,d,e,f| -f }
output = ''
per_file.each do |file_name, lines, file_wall, file_cpu, file_idle, file_sort|
+
output << "<div class='peek-rblineprof-file'><div class='heading'>"
show_src = file_sort > min
tmpl = show_src ? "<a href='#' class='js-lineprof-file'>%s</a>" : "%s"
- output <<
- if mode == 'cpu'
- sprintf("<span class='duration'>% 8.1fms + % 8.1fms</span> #{tmpl}", file_cpu / 1000.0, file_idle / 1000.0, file_name.sub(Rails.root.to_s + '/', ''))
- else
- sprintf("<span class='duration'>% 8.1fms</span> #{tmpl}", file_wall / 1000.0, file_name.sub(Rails.root.to_s + '/', ''))
- end
+ if mode == 'cpu'
+ output << sprintf("<span class='duration'>% 8.1fms + % 8.1fms</span> #{tmpl}", file_cpu / 1000.0, file_idle / 1000.0, file_name.sub(Rails.root.to_s + '/', ''))
+ else
+ output << sprintf("<span class='duration'>% 8.1fms</span> #{tmpl}", file_wall/1000.0, file_name.sub(Rails.root.to_s + '/', ''))
+ end
output << "</div>" # .heading
@@ -89,6 +80,8 @@ module Peek
output << "<pre class='duration'>#{times.join("\n")}</pre>"
# The following line was changed from
# https://github.com/peek/peek-rblineprof/blob/8d3b7a283a27de2f40abda45974516693d882258/lib/peek/rblineprof/controller_helpers.rb#L125
+ # This will become useless once https://github.com/peek/peek-rblineprof/pull/16
+ # is merged and is implemented.
output << "<pre class='code highlight white'>#{pygmentize(file_name, code.join, 'ruby')}</pre>"
output << "</div></div>" # .data then .peek-rblineprof-file
end