class Jekyll::Profiler
def self.tabulate(table_rows)
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)
def initialize(site) @site = site end
def profile_process
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