benchmark-ips 2.8.0 → 2.8.2
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 +4 -4
- data/Manifest.txt +1 -0
- data/lib/benchmark/ips.rb +3 -2
- data/lib/benchmark/ips/job.rb +1 -1
- data/lib/benchmark/ips/job/entry.rb +33 -15
- data/lib/benchmark/ips/stats/stats_metric.rb +21 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da5b50c171ff2a6a40819f6b8d9558052555b93661c4b5f9d7b381dcafaf3e97
|
4
|
+
data.tar.gz: 68bb278b667a4c508a3dfc6474f78ced7f9b211495c51e4c3e020b6b24dc21b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96a2659f8cac1f286fb4074a7a6c590e64e32b8085b1190047dc4b9a4ad6e218846701672459347d984b46b00b49d74ddaeaba284c01204e6f6d41010f1d8677
|
7
|
+
data.tar.gz: 909b29dd0874432f9a08df7f4728029b1bfda0b3499d11a74a04c946beaa82f296ef552aee4e104c7149f1456dc2481186eef166ad10398f5ad36a340cb32c81
|
data/Manifest.txt
CHANGED
data/lib/benchmark/ips.rb
CHANGED
@@ -16,7 +16,7 @@ module Benchmark
|
|
16
16
|
module IPS
|
17
17
|
|
18
18
|
# Benchmark-ips Gem version.
|
19
|
-
VERSION = "2.8.
|
19
|
+
VERSION = "2.8.2"
|
20
20
|
|
21
21
|
# CODENAME of current version.
|
22
22
|
CODENAME = "Tardy Turtle"
|
@@ -109,6 +109,8 @@ module Benchmark
|
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
112
|
+
extend Benchmark::IPS # make ips available as module-level method
|
113
|
+
|
112
114
|
##
|
113
115
|
# :singleton-method: ips
|
114
116
|
#
|
@@ -172,5 +174,4 @@ module Benchmark
|
|
172
174
|
# addition: 4955278.9 i/s - 4.85x slower
|
173
175
|
#
|
174
176
|
# See also Benchmark::IPS
|
175
|
-
extend Benchmark::IPS # make ips available as module-level method
|
176
177
|
end
|
data/lib/benchmark/ips/job.rb
CHANGED
@@ -187,7 +187,7 @@ module Benchmark
|
|
187
187
|
end
|
188
188
|
|
189
189
|
def load_held_results
|
190
|
-
return unless @held_path && File.
|
190
|
+
return unless @held_path && !File.zero?(@held_path)
|
191
191
|
require "json"
|
192
192
|
@held_results = {}
|
193
193
|
JSON.load(IO.read(@held_path)).each do |result|
|
@@ -11,10 +11,12 @@ module Benchmark
|
|
11
11
|
def initialize(label, action)
|
12
12
|
@label = label
|
13
13
|
|
14
|
+
# We define #call_times on the singleton class of each Entry instance.
|
15
|
+
# That way, there is no polymorphism for `@action.call` inside #call_times.
|
16
|
+
|
14
17
|
if action.kind_of? String
|
15
|
-
|
18
|
+
compile_string action
|
16
19
|
@action = self
|
17
|
-
@as_action = true
|
18
20
|
else
|
19
21
|
unless action.respond_to? :call
|
20
22
|
raise ArgumentError, "invalid action, must respond to #call"
|
@@ -23,12 +25,10 @@ module Benchmark
|
|
23
25
|
@action = action
|
24
26
|
|
25
27
|
if action.respond_to? :arity and action.arity > 0
|
26
|
-
|
28
|
+
compile_block_with_manual_loop
|
27
29
|
else
|
28
|
-
|
30
|
+
compile_block
|
29
31
|
end
|
30
|
-
|
31
|
-
@as_action = false
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -40,25 +40,43 @@ module Benchmark
|
|
40
40
|
# @return [String, Proc] Code to be called, could be String / Proc.
|
41
41
|
attr_reader :action
|
42
42
|
|
43
|
-
# Call action by given times
|
43
|
+
# Call action by given times.
|
44
44
|
# @param times [Integer] Times to call +@action+.
|
45
45
|
# @return [Integer] Number of times the +@action+ has been called.
|
46
46
|
def call_times(times)
|
47
|
-
|
47
|
+
raise '#call_times should be redefined per Benchmark::IPS::Job::Entry instance'
|
48
|
+
end
|
48
49
|
|
49
|
-
|
50
|
+
def compile_block
|
51
|
+
m = (class << self; self; end)
|
52
|
+
code = <<-CODE
|
53
|
+
def call_times(times)
|
54
|
+
act = @action
|
50
55
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
+
i = 0
|
57
|
+
while i < times
|
58
|
+
act.call
|
59
|
+
i += 1
|
60
|
+
end
|
61
|
+
end
|
62
|
+
CODE
|
63
|
+
m.class_eval code
|
64
|
+
end
|
65
|
+
|
66
|
+
def compile_block_with_manual_loop
|
67
|
+
m = (class << self; self; end)
|
68
|
+
code = <<-CODE
|
69
|
+
def call_times(times)
|
70
|
+
@action.call(times)
|
71
|
+
end
|
72
|
+
CODE
|
73
|
+
m.class_eval code
|
56
74
|
end
|
57
75
|
|
58
76
|
# Compile code into +call_times+ method.
|
59
77
|
# @param str [String] Code to be compiled.
|
60
78
|
# @return [Symbol] :call_times.
|
61
|
-
def
|
79
|
+
def compile_string(str)
|
62
80
|
m = (class << self; self; end)
|
63
81
|
code = <<-CODE
|
64
82
|
def call_times(__total);
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Benchmark
|
2
|
+
module IPS
|
3
|
+
module Stats
|
4
|
+
module StatsMetric
|
5
|
+
# Return entry's standard deviation of iteration per second in percentage.
|
6
|
+
# @return [Float] +@ips_sd+ in percentage.
|
7
|
+
def error_percentage
|
8
|
+
100.0 * (error.to_f / central_tendency)
|
9
|
+
end
|
10
|
+
|
11
|
+
def overlaps?(baseline)
|
12
|
+
baseline_low = baseline.central_tendency - baseline.error
|
13
|
+
baseline_high = baseline.central_tendency + baseline.error
|
14
|
+
my_high = central_tendency + error
|
15
|
+
my_low = central_tendency - error
|
16
|
+
my_high > baseline_low && my_low < baseline_high
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benchmark-ips
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.8.
|
4
|
+
version: 2.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Phoenix
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -82,6 +82,7 @@ files:
|
|
82
82
|
- lib/benchmark/ips/share.rb
|
83
83
|
- lib/benchmark/ips/stats/bootstrap.rb
|
84
84
|
- lib/benchmark/ips/stats/sd.rb
|
85
|
+
- lib/benchmark/ips/stats/stats_metric.rb
|
85
86
|
- lib/benchmark/timing.rb
|
86
87
|
- test/test_benchmark_ips.rb
|
87
88
|
homepage: https://github.com/evanphx/benchmark-ips
|
@@ -106,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
107
|
- !ruby/object:Gem::Version
|
107
108
|
version: '0'
|
108
109
|
requirements: []
|
109
|
-
rubygems_version: 3.
|
110
|
+
rubygems_version: 3.1.2
|
110
111
|
signing_key:
|
111
112
|
specification_version: 4
|
112
113
|
summary: An iterations per second enhancement to Benchmark.
|