benchmark_driver 0.8.4 → 0.8.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 716469dcf118d6d62f9efcd91ff10b9efb1f3f80c294624ba937009e05ef4409
4
- data.tar.gz: 40e915e4b4452b8d58fc3552bc1e91a13af14ca91b6cbe890fa6d057d69cbcb4
3
+ metadata.gz: 7b988631bc66b48bd7c5f1e6e0c96d7608ad79326cd88b366bc1005f4eca86bd
4
+ data.tar.gz: 443d7912aeeeee587653b74b4d7b4c7e20fc46998b5a90cc57b2b3142d05f4a4
5
5
  SHA512:
6
- metadata.gz: 22b3eee6183866064336dd1ce532a86a8e7d61df3f03d3e1898e17d46b6cd4dbc78be2a2704563bc00dd46747e14d1d22a5d87c4ffcdc2a4f51f31a3fb1d1e6e
7
- data.tar.gz: ec7040d0316de68c74ddf1c7b69f9e4e2776fa954693c23fa328bf416e53b990dc0fe20c00a7a27eb31603c78c899abcf86ed65bbbcf3aa4a947fb70ab247414
6
+ metadata.gz: d98d096c50977365895b3d7c976983b4d2ea5d6f07425be6a17bbbb3e9e939d054d45f35dd52781feffadc1cd2e9e4b48e0d1cd4bb0c6c0b3e60d1d805eb1aa7
7
+ data.tar.gz: 0ab053b1a32973c86c7ea47f6dc7038c0749efb78c67b5e69d025986bfb7eb629e1217a019eefe36fe3d681d83c393d65a7beacde3c386ed088b0cdadf932c5a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # v0.8.5
2
+
3
+ - Show time per iteration for ips output
4
+ - Show clocks too when it's < 1000ns
5
+ - In ips output, 'B' unit (10^9) is changed to 'G'
6
+
1
7
  # v0.8.4
2
8
 
3
9
  - Add `loop_count` option to Ruby interface
@@ -1,5 +1,5 @@
1
1
  module Benchmark
2
2
  module Driver
3
- VERSION = '0.8.4'
3
+ VERSION = '0.8.5'
4
4
  end
5
5
  end
@@ -61,6 +61,15 @@ class Benchmark::Output::Ips
61
61
  @row_results.each do |r|
62
62
  $stdout.print(" %3.6fs" % r.real)
63
63
  end
64
+ if @row_results.size == 1
65
+ sec = @row_results[0].real
66
+ iter = result.iterations
67
+ if File.exist?('/proc/cpuinfo') && (clks = estimate_clock(sec, iter)) < 1_000
68
+ $stdout.print(" (#{pretty_sec(sec, iter)}/i, #{clks}clocks/i)")
69
+ else
70
+ $stdout.print(" (#{pretty_sec(sec, iter)}/i)")
71
+ end
72
+ end
64
73
  $stdout.puts
65
74
  end
66
75
 
@@ -81,7 +90,7 @@ class Benchmark::Output::Ips
81
90
  case scale
82
91
  when 1; 'k'
83
92
  when 2; 'M'
84
- when 3; 'B'
93
+ when 3; 'G'
85
94
  when 4; 'T'
86
95
  when 5; 'Q'
87
96
  else # < 1000 or > 10^15, no scale or suffix
@@ -91,6 +100,26 @@ class Benchmark::Output::Ips
91
100
  "%#{width}.3f#{suffix}" % (value.to_f / (1000 ** scale))
92
101
  end
93
102
 
103
+ def pretty_sec sec, iter
104
+ r = Rational(sec, iter)
105
+ case
106
+ when r >= 1
107
+ "#{'%3.2f' % r.to_f}s"
108
+ when r >= 1/1000r
109
+ "#{'%3.2f' % (r * 1_000).to_f}ms"
110
+ when r >= 1/1000_000r
111
+ "#{'%3.2f' % (r * 1_000_000).to_f}us"
112
+ else
113
+ "#{'%3.2f' % (r * 1_000_000_000).to_f}ns"
114
+ end
115
+ end
116
+
117
+ def estimate_clock sec, iter
118
+ hz = File.read('/proc/cpuinfo').scan(/cpu MHz\s+:\s+([\d\.]+)/){|(f)| break hz = Rational(f.to_f) * 1_000_000}
119
+ r = Rational(sec, iter)
120
+ Integer(r/(1/hz))
121
+ end
122
+
94
123
  def compare
95
124
  $stdout.puts("\nComparison:")
96
125
  results = @results.sort_by { |r| -r.ips }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: benchmark_driver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-31 00:00:00.000000000 Z
11
+ date: 2018-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler