This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Jekyll
|
||||
class Profiler
|
||||
TERMINAL_TABLE_STYLES = {
|
||||
:alignment => :right,
|
||||
:border_top => false,
|
||||
:border_bottom => false,
|
||||
}.freeze
|
||||
private_constant :TERMINAL_TABLE_STYLES
|
||||
|
||||
def self.tabulate(table_rows)
|
||||
require "terminal-table"
|
||||
|
||||
rows = table_rows.dup
|
||||
header = rows.shift
|
||||
output = +"\n"
|
||||
|
||||
table = Terminal::Table.new do |t|
|
||||
t << header
|
||||
t << :separator
|
||||
rows.each { |row| t << row }
|
||||
t.style = TERMINAL_TABLE_STYLES
|
||||
t.align_column(0, :left)
|
||||
end
|
||||
|
||||
output << table.to_s << "\n"
|
||||
end
|
||||
|
||||
def initialize(site)
|
||||
@site = site
|
||||
end
|
||||
|
||||
def profile_process
|
||||
profile_data = { "PHASE" => "TIME" }
|
||||
|
||||
[:reset, :read, :generate, :render, :cleanup, :write].each do |method|
|
||||
start_time = Time.now
|
||||
@site.send(method)
|
||||
end_time = (Time.now - start_time).round(4)
|
||||
profile_data[method.to_s.upcase] = format("%.4f", end_time)
|
||||
end
|
||||
|
||||
Jekyll.logger.info "\nBuild Process Summary:"
|
||||
Jekyll.logger.info Profiler.tabulate(Array(profile_data))
|
||||
|
||||
Jekyll.logger.info "\nSite Render Stats:"
|
||||
@site.print_stats
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user