Skip to content

Commit 093a416

Browse files
committed
Add improvement when 2 revisions explicitly specified
1 parent 6eae146 commit 093a416

File tree

2 files changed

+33
-24
lines changed

2 files changed

+33
-24
lines changed

Diff for: lib/diffbench.rb

+10-7
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,9 @@ def print_results(results)
7676
results.each do |revision, benchmark|
7777
output "#{revision}: #{benchmark[test].format}"
7878
end
79-
#TODO set improvement
80-
#improvement = improvement_percentage(before_patch, after_patch)
81-
#color_string = result_color(improvement)
82-
#output self.class.color("Improvement: #{improvement}%", color_string).strip
79+
if results.size == 2
80+
output_improvement(*results.values.map {|b| b[test]})
81+
end
8382
output ""
8483
end
8584
end
@@ -117,15 +116,19 @@ def run_current_head
117116
output(("-" * (caption.size - test.size)) + test)
118117
before_patch = second_run[test]
119118
after_patch = first_run[test]
120-
improvement = improvement_percentage(before_patch, after_patch)
121-
color_string = result_color(improvement)
122119
output "After patch: #{after_patch.format}"
123120
output "Before patch: #{before_patch.format}"
124-
output self.class.color("Improvement: #{improvement}%", color_string).strip
121+
output_improvement(before_patch, after_patch)
125122
output ""
126123
end
127124
end
128125

126+
def output_improvement(before, after)
127+
improvement = improvement_percentage(before, after)
128+
color_string = result_color(improvement)
129+
output self.class.color("Improvement: #{improvement}%", color_string).strip
130+
end
131+
129132
def improvement_percentage(before_patch, after_patch)
130133
(((before_patch.real - after_patch.real).to_f / before_patch.real) * 100).round
131134
end

Diff for: spec/diffbench_spec.rb

+23-17
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ def to_regexp(output)
77
Regexp.compile(Regexp.escape(output).gsub("NUM", "[0-9]+"))
88
end
99

10+
def improvement_expression
11+
DiffBench::Runner.color("Improvement: NUM%", :green)
12+
end
13+
1014
let(:repo) do
1115
"#{File.dirname(__FILE__)}/repo"
1216
end
@@ -44,14 +48,14 @@ def to_regexp(output)
4448
4549
user system total real
4650
--------------------------------------------------Sleeper 1
47-
After patch: 0.000000 0.000000 0.000000 ( 0.100NUM)
48-
Before patch: 0.000000 0.000000 0.000000 ( 0.200NUM)
49-
#{DiffBench::Runner.color("Improvement: 50%", :green)}
51+
After patch: 0.000000 0.000000 0.000000 ( 0.10NUM)
52+
Before patch: 0.000000 0.000000 0.000000 ( 0.20NUM)
53+
#{improvement_expression}
5054
5155
--------------------------------------------------Sleeper 2
52-
After patch: 0.000000 0.000000 0.000000 ( 0.100NUM)
53-
Before patch: 0.000000 0.000000 0.000000 ( 0.200NUM)
54-
#{DiffBench::Runner.color("Improvement: 50%", :green)}
56+
After patch: 0.000000 0.000000 0.000000 ( 0.10NUM)
57+
Before patch: 0.000000 0.000000 0.000000 ( 0.20NUM)
58+
#{improvement_expression}
5559
OUT
5660
end
5761

@@ -81,19 +85,19 @@ def to_regexp(output)
8185
8286
user system total real
8387
--------------------------------------------------Sleeper 1
84-
After patch: 0.000000 0.000000 0.000000 ( 0.100NUM)
85-
Before patch: 0.000000 0.000000 0.000000 ( 0.200NUM)
86-
#{DiffBench::Runner.color("Improvement: 50%", :green)}
88+
After patch: 0.000000 0.000000 0.000000 ( 0.10NUM)
89+
Before patch: 0.000000 0.000000 0.000000 ( 0.20NUM)
90+
#{improvement_expression}
8791
8892
--------------------------------------------------Sleeper 2
89-
After patch: 0.000000 0.000000 0.000000 ( 0.100NUM)
90-
Before patch: 0.000000 0.000000 0.000000 ( 0.200NUM)
91-
#{DiffBench::Runner.color("Improvement: 50%", :green)}
93+
After patch: 0.000000 0.000000 0.000000 ( 0.10NUM)
94+
Before patch: 0.000000 0.000000 0.000000 ( 0.20NUM)
95+
#{improvement_expression}
9296
OUT
9397
end
9498

9599
it "should run benchmark for specified revisions" do
96-
revs = `cd #{repo};git log --pretty="%h"`.split("\n")
100+
revs = `cd #{repo};git log --pretty="%h"`.split("\n").reverse
97101
output = `cd #{repo}; ./../../bin/diffbench -r #{revs.join(",")} bench.rb`
98102
output.should =~ to_regexp(<<-OUT)
99103
Checkout to #{revs.first}
@@ -108,12 +112,14 @@ def to_regexp(output)
108112
109113
user system total real
110114
--------------------------------------------------Sleeper 1
111-
#{revs.first}: 0.000000 0.000000 0.000000 ( 0.100NUM)
112-
#{revs.last }: 0.000000 0.000000 0.000000 ( 0.200NUM)
115+
#{revs.first}: 0.000000 0.000000 0.000000 ( 0.10NUM)
116+
#{revs.last }: 0.000000 0.000000 0.000000 ( 0.20NUM)
117+
#{improvement_expression}
113118
114119
--------------------------------------------------Sleeper 2
115-
#{revs.first}: 0.000000 0.000000 0.000000 ( 0.100NUM)
116-
#{revs.last }: 0.000000 0.000000 0.000000 ( 0.200NUM)
120+
#{revs.first}: 0.000000 0.000000 0.000000 ( 0.10NUM)
121+
#{revs.last }: 0.000000 0.000000 0.000000 ( 0.20NUM)
122+
#{improvement_expression}
117123
OUT
118124
end
119125
end

0 commit comments

Comments
 (0)