benchmark_driver 0.8.4 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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