Add byte counter
This commit is contained in:
parent
1e9163fdf4
commit
7bc9e1aae6
|
@ -22,6 +22,11 @@ module Jekyll
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def increment_bytes(filename, bytes)
|
||||||
|
@stats[filename][:bytes] ||= 0
|
||||||
|
@stats[filename][:bytes] += bytes
|
||||||
|
end
|
||||||
|
|
||||||
def increment_time(filename, time)
|
def increment_time(filename, time)
|
||||||
@stats[filename][:time] ||= 0.0
|
@stats[filename][:time] ||= 0.0
|
||||||
@stats[filename][:time] += time
|
@stats[filename][:time] += time
|
||||||
|
|
|
@ -16,18 +16,28 @@ module Jekyll
|
||||||
|
|
||||||
def render(*args)
|
def render(*args)
|
||||||
measure_time do
|
measure_time do
|
||||||
@template.render(*args)
|
measure_bytes do
|
||||||
|
@template.render(*args)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def render!(*args)
|
def render!(*args)
|
||||||
measure_time do
|
measure_time do
|
||||||
@template.render!(*args)
|
measure_bytes do
|
||||||
|
@template.render!(*args)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def measure_bytes
|
||||||
|
str = yield
|
||||||
|
ensure
|
||||||
|
@renderer.increment_bytes(@filename, str.bytesize)
|
||||||
|
end
|
||||||
|
|
||||||
def measure_time
|
def measure_time
|
||||||
before = Time.now
|
before = Time.now
|
||||||
yield
|
yield
|
||||||
|
|
|
@ -57,11 +57,11 @@ module Jekyll
|
||||||
end
|
end
|
||||||
|
|
||||||
def table_widths(data)
|
def table_widths(data)
|
||||||
widths = [ 0, 0, 0 ]
|
widths = []
|
||||||
|
|
||||||
data.each do |row|
|
data.each do |row|
|
||||||
row.each_with_index do |cell, index|
|
row.each_with_index do |cell, index|
|
||||||
widths[index] = [ cell.length, widths[index] ].max
|
widths[index] = [ cell.length, widths[index] ].compact.max
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -72,17 +72,23 @@ module Jekyll
|
||||||
sorted = @stats.sort_by{ |filename, file_stats| -file_stats[:time] }
|
sorted = @stats.sort_by{ |filename, file_stats| -file_stats[:time] }
|
||||||
sorted = sorted.slice(0, n)
|
sorted = sorted.slice(0, n)
|
||||||
|
|
||||||
table = [[ 'Filename', 'Count', 'Total time' ]]
|
table = [[ 'Filename', 'Count', 'Bytes', 'Time' ]]
|
||||||
|
|
||||||
sorted.each do |filename, file_stats|
|
sorted.each do |filename, file_stats|
|
||||||
row = []
|
row = []
|
||||||
row << filename
|
row << filename
|
||||||
row << file_stats[:count].to_s
|
row << file_stats[:count].to_s
|
||||||
|
row << format_bytes(file_stats[:bytes])
|
||||||
row << "%.3f" % file_stats[:time]
|
row << "%.3f" % file_stats[:time]
|
||||||
table << row
|
table << row
|
||||||
end
|
end
|
||||||
|
|
||||||
table
|
table
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def format_bytes(bytes)
|
||||||
|
bytes /= 1024.0
|
||||||
|
"%.2fK" % bytes
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,9 +13,9 @@ class TestLiquidRenderer < JekyllUnitTest
|
||||||
output = @renderer.stats_table
|
output = @renderer.stats_table
|
||||||
|
|
||||||
expected = [
|
expected = [
|
||||||
/^Filename\s+|\s+Count\s+|\s+Total time$/,
|
/^Filename\s+|\s+Count\s+|\s+Bytes\s+|\s+Time$/,
|
||||||
/^-+\++-+\++-+$/,
|
/^-+\++-+\++-+\++-+$/,
|
||||||
/^_posts\/2010-01-09-date-override\.markdown\s+|\s+\d+\s+|\s+\d+\.\d{3}$/,
|
/^_posts\/2010-01-09-date-override\.markdown\s+|\s+\d+\s+|\s+\d+\.\d{2}K\s+|\s+\d+\.\d{3}$/,
|
||||||
]
|
]
|
||||||
|
|
||||||
expected.each do |regexp|
|
expected.each do |regexp|
|
||||||
|
|
Loading…
Reference in New Issue