benchmark-ips 2.3.0 → 2.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/History.md +228 -0
- data/LICENSE +20 -0
- data/README.md +129 -29
- data/examples/advanced.rb +20 -0
- data/examples/hold.rb +41 -0
- data/examples/save.rb +50 -0
- data/examples/simple.rb +47 -0
- data/lib/benchmark/compare.rb +59 -23
- data/lib/benchmark/ips/job/entry.rb +95 -0
- data/lib/benchmark/ips/job/noop_report.rb +27 -0
- data/lib/benchmark/ips/job/stdout_report.rb +64 -0
- data/lib/benchmark/ips/job.rb +211 -150
- data/lib/benchmark/ips/noop_suite.rb +25 -0
- data/lib/benchmark/ips/report.rb +53 -30
- data/lib/benchmark/ips/share.rb +50 -0
- data/lib/benchmark/ips/stats/bootstrap.rb +58 -0
- data/lib/benchmark/ips/stats/sd.rb +45 -0
- data/lib/benchmark/ips/stats/stats_metric.rb +21 -0
- data/lib/benchmark/ips.rb +91 -24
- data/lib/benchmark/timing.rb +39 -16
- metadata +24 -31
- data/.autotest +0 -23
- data/.gemtest +0 -0
- data/History.txt +0 -87
- data/Manifest.txt +0 -11
- data/Rakefile +0 -26
- data/test/test_benchmark_ips.rb +0 -161
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'net/http'
|
4
|
+
require 'net/https'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
module Benchmark
|
8
|
+
module IPS
|
9
|
+
class Share
|
10
|
+
DEFAULT_URL = "https://ips.fastruby.io"
|
11
|
+
def initialize(report, job)
|
12
|
+
@report = report
|
13
|
+
@job = job
|
14
|
+
end
|
15
|
+
|
16
|
+
def share
|
17
|
+
base = (ENV['SHARE_URL'] || DEFAULT_URL)
|
18
|
+
url = URI(File.join(base, "reports"))
|
19
|
+
|
20
|
+
req = Net::HTTP::Post.new(url)
|
21
|
+
|
22
|
+
data = {
|
23
|
+
"entries" => @report.data,
|
24
|
+
"options" => {
|
25
|
+
"compare" => @job.compare?
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
req.body = JSON.generate(data)
|
30
|
+
|
31
|
+
http = Net::HTTP.new(url.hostname, url.port)
|
32
|
+
if url.scheme == "https"
|
33
|
+
http.use_ssl = true
|
34
|
+
http.ssl_version = :TLSv1_2
|
35
|
+
end
|
36
|
+
|
37
|
+
res = http.start do |h|
|
38
|
+
h.request req
|
39
|
+
end
|
40
|
+
|
41
|
+
if Net::HTTPOK === res
|
42
|
+
data = JSON.parse res.body
|
43
|
+
puts "Shared at: #{File.join(base, data["id"])}"
|
44
|
+
else
|
45
|
+
puts "Error sharing report"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Benchmark
|
2
|
+
module IPS
|
3
|
+
module Stats
|
4
|
+
|
5
|
+
class Bootstrap
|
6
|
+
include StatsMetric
|
7
|
+
attr_reader :data, :error, :samples
|
8
|
+
|
9
|
+
def initialize(samples, confidence)
|
10
|
+
dependencies
|
11
|
+
@iterations = 10_000
|
12
|
+
@confidence = (confidence / 100.0).to_s
|
13
|
+
@samples = samples
|
14
|
+
@data = Kalibera::Data.new({[0] => samples}, [1, samples.size])
|
15
|
+
interval = @data.bootstrap_confidence_interval(@iterations, @confidence)
|
16
|
+
@median = interval.median
|
17
|
+
@error = interval.error
|
18
|
+
end
|
19
|
+
|
20
|
+
# Average stat value
|
21
|
+
# @return [Float] central_tendency
|
22
|
+
def central_tendency
|
23
|
+
@median
|
24
|
+
end
|
25
|
+
|
26
|
+
# Determines how much slower this stat is than the baseline stat
|
27
|
+
# if this average is lower than the faster baseline, higher average is better (e.g. ips) (calculate accordingly)
|
28
|
+
# @param baseline [SD|Bootstrap] faster baseline
|
29
|
+
# @returns [Array<Float, nil>] the slowdown and the error (not calculated for standard deviation)
|
30
|
+
def slowdown(baseline)
|
31
|
+
low, slowdown, high = baseline.data.bootstrap_quotient(@data, @iterations, @confidence)
|
32
|
+
error = Timing.mean([slowdown - low, high - slowdown])
|
33
|
+
[slowdown, error]
|
34
|
+
end
|
35
|
+
|
36
|
+
def speedup(baseline)
|
37
|
+
baseline.slowdown(self)
|
38
|
+
end
|
39
|
+
|
40
|
+
def footer
|
41
|
+
"with #{(@confidence.to_f * 100).round(1)}% confidence"
|
42
|
+
end
|
43
|
+
|
44
|
+
def dependencies
|
45
|
+
require 'kalibera'
|
46
|
+
rescue LoadError
|
47
|
+
puts
|
48
|
+
puts "Can't load the kalibera gem - this is required to use the :bootstrap stats options."
|
49
|
+
puts "It's optional, so we don't formally depend on it and it isn't installed along with benchmark-ips."
|
50
|
+
puts "You probably want to do something like 'gem install kalibera' to fix this."
|
51
|
+
abort
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Benchmark
|
2
|
+
module IPS
|
3
|
+
module Stats
|
4
|
+
|
5
|
+
class SD
|
6
|
+
include StatsMetric
|
7
|
+
attr_reader :error, :samples
|
8
|
+
|
9
|
+
def initialize(samples)
|
10
|
+
@samples = samples
|
11
|
+
@mean = Timing.mean(samples)
|
12
|
+
@error = Timing.stddev(samples, @mean).round
|
13
|
+
end
|
14
|
+
|
15
|
+
# Average stat value
|
16
|
+
# @return [Float] central_tendency
|
17
|
+
def central_tendency
|
18
|
+
@mean
|
19
|
+
end
|
20
|
+
|
21
|
+
# Determines how much slower this stat is than the baseline stat
|
22
|
+
# if this average is lower than the faster baseline, higher average is better (e.g. ips) (calculate accordingly)
|
23
|
+
# @param baseline [SD|Bootstrap] faster baseline
|
24
|
+
# @returns [Array<Float, nil>] the slowdown and the error (not calculated for standard deviation)
|
25
|
+
def slowdown(baseline)
|
26
|
+
if baseline.central_tendency > central_tendency
|
27
|
+
[baseline.central_tendency.to_f / central_tendency, nil]
|
28
|
+
else
|
29
|
+
[central_tendency.to_f / baseline.central_tendency, nil]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def speedup(baseline)
|
34
|
+
baseline.slowdown(self)
|
35
|
+
end
|
36
|
+
|
37
|
+
def footer
|
38
|
+
nil
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -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
|
data/lib/benchmark/ips.rb
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'benchmark/timing'
|
3
3
|
require 'benchmark/compare'
|
4
|
+
require 'benchmark/ips/stats/stats_metric'
|
5
|
+
require 'benchmark/ips/stats/sd'
|
6
|
+
require 'benchmark/ips/stats/bootstrap'
|
4
7
|
require 'benchmark/ips/report'
|
8
|
+
require 'benchmark/ips/noop_suite'
|
9
|
+
require 'benchmark/ips/job/entry'
|
10
|
+
require 'benchmark/ips/job/stdout_report'
|
11
|
+
require 'benchmark/ips/job/noop_report'
|
5
12
|
require 'benchmark/ips/job'
|
6
13
|
|
7
14
|
# Performance benchmarking library
|
@@ -11,10 +18,10 @@ module Benchmark
|
|
11
18
|
module IPS
|
12
19
|
|
13
20
|
# Benchmark-ips Gem version.
|
14
|
-
VERSION = "2.
|
21
|
+
VERSION = "2.11.0"
|
15
22
|
|
16
23
|
# CODENAME of current version.
|
17
|
-
CODENAME = "
|
24
|
+
CODENAME = "We Do This Once A Year"
|
18
25
|
|
19
26
|
# Measure code in block, each code's benchmarked result will display in
|
20
27
|
# iteration per second with standard deviation in given time.
|
@@ -28,47 +35,43 @@ module Benchmark
|
|
28
35
|
time, warmup, quiet = args
|
29
36
|
end
|
30
37
|
|
31
|
-
suite = nil
|
32
|
-
|
33
38
|
sync, $stdout.sync = $stdout.sync, true
|
34
39
|
|
35
|
-
|
36
|
-
suite = Benchmark::Suite.current
|
37
|
-
end
|
38
|
-
|
39
|
-
quiet ||= (suite && suite.quiet?)
|
40
|
-
|
41
|
-
job = Job.new({:suite => suite,
|
42
|
-
:quiet => quiet
|
43
|
-
})
|
40
|
+
job = Job.new
|
44
41
|
|
45
42
|
job_opts = {}
|
46
43
|
job_opts[:time] = time unless time.nil?
|
47
44
|
job_opts[:warmup] = warmup unless warmup.nil?
|
45
|
+
job_opts[:quiet] = quiet unless quiet.nil?
|
48
46
|
|
49
47
|
job.config job_opts
|
50
48
|
|
51
49
|
yield job
|
52
50
|
|
53
|
-
|
54
|
-
|
55
|
-
job.run_warmup
|
56
|
-
|
57
|
-
$stdout.puts "-------------------------------------------------" unless quiet
|
51
|
+
job.load_held_results
|
58
52
|
|
59
53
|
job.run
|
60
54
|
|
55
|
+
if job.run_single? && job.all_results_have_been_run?
|
56
|
+
job.clear_held_results
|
57
|
+
else
|
58
|
+
job.save_held_results
|
59
|
+
puts '', 'Pausing here -- run Ruby again to measure the next benchmark...' if job.run_single?
|
60
|
+
end
|
61
|
+
|
61
62
|
$stdout.sync = sync
|
63
|
+
job.run_comparison
|
64
|
+
job.generate_json
|
62
65
|
|
63
|
-
|
64
|
-
job.run_comparison
|
65
|
-
end
|
66
|
+
report = job.full_report
|
66
67
|
|
67
|
-
if
|
68
|
-
|
68
|
+
if ENV['SHARE'] || ENV['SHARE_URL']
|
69
|
+
require 'benchmark/ips/share'
|
70
|
+
share = Share.new report, job
|
71
|
+
share.share
|
69
72
|
end
|
70
73
|
|
71
|
-
|
74
|
+
report
|
72
75
|
end
|
73
76
|
|
74
77
|
# Set options for running the benchmarks.
|
@@ -100,4 +103,68 @@ module Benchmark
|
|
100
103
|
end
|
101
104
|
|
102
105
|
extend Benchmark::IPS # make ips available as module-level method
|
106
|
+
|
107
|
+
##
|
108
|
+
# :singleton-method: ips
|
109
|
+
#
|
110
|
+
# require 'benchmark/ips'
|
111
|
+
#
|
112
|
+
# Benchmark.ips do |x|
|
113
|
+
# # Configure the number of seconds used during
|
114
|
+
# # the warmup phase (default 2) and calculation phase (default 5)
|
115
|
+
# x.config(:time => 5, :warmup => 2)
|
116
|
+
#
|
117
|
+
# # These parameters can also be configured this way
|
118
|
+
# x.time = 5
|
119
|
+
# x.warmup = 2
|
120
|
+
#
|
121
|
+
# # Typical mode, runs the block as many times as it can
|
122
|
+
# x.report("addition") { 1 + 2 }
|
123
|
+
#
|
124
|
+
# # To reduce overhead, the number of iterations is passed in
|
125
|
+
# # and the block must run the code the specific number of times.
|
126
|
+
# # Used for when the workload is very small and any overhead
|
127
|
+
# # introduces incorrectable errors.
|
128
|
+
# x.report("addition2") do |times|
|
129
|
+
# i = 0
|
130
|
+
# while i < times
|
131
|
+
# 1 + 2
|
132
|
+
# i += 1
|
133
|
+
# end
|
134
|
+
# end
|
135
|
+
#
|
136
|
+
# # To reduce overhead even more, grafts the code given into
|
137
|
+
# # the loop that performs the iterations internally to reduce
|
138
|
+
# # overhead. Typically not needed, use the |times| form instead.
|
139
|
+
# x.report("addition3", "1 + 2")
|
140
|
+
#
|
141
|
+
# # Really long labels should be formatted correctly
|
142
|
+
# x.report("addition-test-long-label") { 1 + 2 }
|
143
|
+
#
|
144
|
+
# # Compare the iterations per second of the various reports!
|
145
|
+
# x.compare!
|
146
|
+
# end
|
147
|
+
#
|
148
|
+
# This will generate the following report:
|
149
|
+
#
|
150
|
+
# Calculating -------------------------------------
|
151
|
+
# addition 71.254k i/100ms
|
152
|
+
# addition2 68.658k i/100ms
|
153
|
+
# addition3 83.079k i/100ms
|
154
|
+
# addition-test-long-label
|
155
|
+
# 70.129k i/100ms
|
156
|
+
# -------------------------------------------------
|
157
|
+
# addition 4.955M (± 8.7%) i/s - 24.155M
|
158
|
+
# addition2 24.011M (± 9.5%) i/s - 114.246M
|
159
|
+
# addition3 23.958M (±10.1%) i/s - 115.064M
|
160
|
+
# addition-test-long-label
|
161
|
+
# 5.014M (± 9.1%) i/s - 24.545M
|
162
|
+
#
|
163
|
+
# Comparison:
|
164
|
+
# addition2: 24011974.8 i/s
|
165
|
+
# addition3: 23958619.8 i/s - 1.00x slower
|
166
|
+
# addition-test-long-label: 5014756.0 i/s - 4.79x slower
|
167
|
+
# addition: 4955278.9 i/s - 4.85x slower
|
168
|
+
#
|
169
|
+
# See also Benchmark::IPS
|
103
170
|
end
|
data/lib/benchmark/timing.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
module Benchmark
|
2
2
|
# Perform caclulations on Timing results.
|
3
3
|
module Timing
|
4
|
+
# Microseconds per second.
|
5
|
+
MICROSECONDS_PER_SECOND = 1_000_000
|
4
6
|
|
5
7
|
# Calculate (arithmetic) mean of given samples.
|
6
8
|
# @param [Array] samples Samples to calculate mean.
|
7
9
|
# @return [Float] Mean of given samples.
|
8
10
|
def self.mean(samples)
|
9
|
-
sum = samples.inject(
|
11
|
+
sum = samples.inject(:+)
|
10
12
|
sum / samples.size
|
11
13
|
end
|
12
14
|
|
@@ -29,21 +31,7 @@ module Benchmark
|
|
29
31
|
Math.sqrt variance(samples, m)
|
30
32
|
end
|
31
33
|
|
32
|
-
#
|
33
|
-
# @param [Integer] resample_times Resample times, defaults to 100.
|
34
|
-
# @return [Array] Resampled samples.
|
35
|
-
def self.resample_mean(samples, resample_times=100)
|
36
|
-
resamples = []
|
37
|
-
|
38
|
-
resample_times.times do
|
39
|
-
resample = samples.map { samples[rand(samples.size)] }
|
40
|
-
resamples << Timing.mean(resample)
|
41
|
-
end
|
42
|
-
|
43
|
-
resamples
|
44
|
-
end
|
45
|
-
|
46
|
-
# Recycle unsed objects by starting Garbage Collector.
|
34
|
+
# Recycle used objects by starting Garbage Collector.
|
47
35
|
def self.clean_env
|
48
36
|
# rbx
|
49
37
|
if GC.respond_to? :run
|
@@ -52,5 +40,40 @@ module Benchmark
|
|
52
40
|
GC.start
|
53
41
|
end
|
54
42
|
end
|
43
|
+
|
44
|
+
# Use a monotonic clock if available, otherwise use Time
|
45
|
+
begin
|
46
|
+
Process.clock_gettime Process::CLOCK_MONOTONIC, :float_microsecond
|
47
|
+
|
48
|
+
# Get an object that represents now and can be converted to microseconds
|
49
|
+
def self.now
|
50
|
+
Process.clock_gettime Process::CLOCK_MONOTONIC, :float_microsecond
|
51
|
+
end
|
52
|
+
|
53
|
+
# Add one second to the time represenetation
|
54
|
+
def self.add_second(t, s)
|
55
|
+
t + (s * MICROSECONDS_PER_SECOND)
|
56
|
+
end
|
57
|
+
|
58
|
+
# Return the number of microseconds between the 2 moments
|
59
|
+
def self.time_us(before, after)
|
60
|
+
after - before
|
61
|
+
end
|
62
|
+
rescue NameError
|
63
|
+
# Get an object that represents now and can be converted to microseconds
|
64
|
+
def self.now
|
65
|
+
Time.now
|
66
|
+
end
|
67
|
+
|
68
|
+
# Add one second to the time represenetation
|
69
|
+
def self.add_second(t, s)
|
70
|
+
t + s
|
71
|
+
end
|
72
|
+
|
73
|
+
# Return the number of microseconds between the 2 moments
|
74
|
+
def self.time_us(before, after)
|
75
|
+
(after.to_f - before.to_f) * MICROSECONDS_PER_SECOND
|
76
|
+
end
|
77
|
+
end
|
55
78
|
end
|
56
79
|
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.
|
4
|
+
version: 2.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Phoenix
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '5.
|
19
|
+
version: '5.4'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '5.
|
26
|
+
version: '5.4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rdoc
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,47 +38,41 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '4.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: hoe
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '3.13'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '3.13'
|
55
41
|
description: A iterations per second enhancement to Benchmark.
|
56
42
|
email:
|
57
43
|
- evan@phx.io
|
58
44
|
executables: []
|
59
45
|
extensions: []
|
60
46
|
extra_rdoc_files:
|
61
|
-
- History.
|
62
|
-
-
|
47
|
+
- History.md
|
48
|
+
- LICENSE
|
63
49
|
- README.md
|
64
50
|
files:
|
65
|
-
-
|
66
|
-
-
|
67
|
-
- History.txt
|
68
|
-
- Manifest.txt
|
51
|
+
- History.md
|
52
|
+
- LICENSE
|
69
53
|
- README.md
|
70
|
-
-
|
54
|
+
- examples/advanced.rb
|
55
|
+
- examples/hold.rb
|
56
|
+
- examples/save.rb
|
57
|
+
- examples/simple.rb
|
71
58
|
- lib/benchmark/compare.rb
|
72
59
|
- lib/benchmark/ips.rb
|
73
60
|
- lib/benchmark/ips/job.rb
|
61
|
+
- lib/benchmark/ips/job/entry.rb
|
62
|
+
- lib/benchmark/ips/job/noop_report.rb
|
63
|
+
- lib/benchmark/ips/job/stdout_report.rb
|
64
|
+
- lib/benchmark/ips/noop_suite.rb
|
74
65
|
- lib/benchmark/ips/report.rb
|
66
|
+
- lib/benchmark/ips/share.rb
|
67
|
+
- lib/benchmark/ips/stats/bootstrap.rb
|
68
|
+
- lib/benchmark/ips/stats/sd.rb
|
69
|
+
- lib/benchmark/ips/stats/stats_metric.rb
|
75
70
|
- lib/benchmark/timing.rb
|
76
|
-
- test/test_benchmark_ips.rb
|
77
71
|
homepage: https://github.com/evanphx/benchmark-ips
|
78
72
|
licenses:
|
79
73
|
- MIT
|
80
74
|
metadata: {}
|
81
|
-
post_install_message:
|
75
|
+
post_install_message:
|
82
76
|
rdoc_options:
|
83
77
|
- "--main"
|
84
78
|
- README.md
|
@@ -95,9 +89,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
89
|
- !ruby/object:Gem::Version
|
96
90
|
version: '0'
|
97
91
|
requirements: []
|
98
|
-
|
99
|
-
|
100
|
-
signing_key:
|
92
|
+
rubygems_version: 3.3.20
|
93
|
+
signing_key:
|
101
94
|
specification_version: 4
|
102
95
|
summary: A iterations per second enhancement to Benchmark.
|
103
96
|
test_files: []
|
data/.autotest
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# -*- ruby -*-
|
2
|
-
|
3
|
-
require 'autotest/restart'
|
4
|
-
|
5
|
-
# Autotest.add_hook :initialize do |at|
|
6
|
-
# at.extra_files << "../some/external/dependency.rb"
|
7
|
-
#
|
8
|
-
# at.libs << ":../some/external"
|
9
|
-
#
|
10
|
-
# at.add_exception 'vendor'
|
11
|
-
#
|
12
|
-
# at.add_mapping(/dependency.rb/) do |f, _|
|
13
|
-
# at.files_matching(/test_.*rb$/)
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# %w(TestA TestB).each do |klass|
|
17
|
-
# at.extra_class_map[klass] = "test/test_misc.rb"
|
18
|
-
# end
|
19
|
-
# end
|
20
|
-
|
21
|
-
# Autotest.add_hook :run_command do |at|
|
22
|
-
# system "rake build"
|
23
|
-
# end
|
data/.gemtest
DELETED
File without changes
|
data/History.txt
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
=== 2.3.0 / 2015-07-20
|
2
|
-
|
3
|
-
* 2 minor features:
|
4
|
-
* Support keyword arguments
|
5
|
-
* Allow any datatype for labels (use #to_s conversion)
|
6
|
-
|
7
|
-
* 1 doc/test changes:
|
8
|
-
* Newer Travis for 1.8.7, ree, and 2.2.2
|
9
|
-
|
10
|
-
* 3 PRs merged:
|
11
|
-
* Merge pull request #41 from kbrock/kwargs-support
|
12
|
-
* Merge pull request #42 from kbrock/newer_travis
|
13
|
-
* Merge pull request #43 from kbrock/non_to_s_labels
|
14
|
-
|
15
|
-
=== 2.2.0 / 2015-05-09
|
16
|
-
|
17
|
-
* 1 minor features:
|
18
|
-
* Fix quiet mode
|
19
|
-
* Allow passing a custom suite via config
|
20
|
-
* Silent a job if a suite was passed and is quiet
|
21
|
-
* Export report to json file.
|
22
|
-
* Accept symbol as report's argument.
|
23
|
-
|
24
|
-
* 2 doc fixes:
|
25
|
-
* Squish duplicate `to` in README
|
26
|
-
* Update copyright to 2015. [ci skip]
|
27
|
-
|
28
|
-
* 9 PRs merged:
|
29
|
-
* Merge pull request #37 from splattael/patch-1
|
30
|
-
* Merge pull request #36 from kirs/quiet-mode
|
31
|
-
* Merge pull request #35 from JuanitoFatas/doc/suite
|
32
|
-
* Merge pull request #34 from splattael/config-suite
|
33
|
-
* Merge pull request #33 from splattael/suite-quiet
|
34
|
-
* Merge pull request #32 from O-I/remove-gemfile-lock
|
35
|
-
* Merge pull request #31 from JuanitoFatas/doc/bump-copyright-year
|
36
|
-
* Merge pull request #29 from JuanitoFatas/feature/json-export
|
37
|
-
* Merge pull request #26 from JuanitoFatas/feature/takes-symbol-as-report-parameter
|
38
|
-
|
39
|
-
=== 2.1.1 / 2015-01-12
|
40
|
-
|
41
|
-
* 1 minor fix:
|
42
|
-
* Don't send label through printf so that % work directly
|
43
|
-
|
44
|
-
* 1 documenation changes:
|
45
|
-
* Use HEREDOC and wrap at 80 chars for example result description
|
46
|
-
|
47
|
-
* 1 usage fix:
|
48
|
-
* Add gemspec for use via bundler git
|
49
|
-
|
50
|
-
* 1 PR merged:
|
51
|
-
* Merge pull request #24 from zzak/simple-format-result-description
|
52
|
-
|
53
|
-
=== 2.1.0 / 2014-11-10
|
54
|
-
|
55
|
-
* Documentation changes:
|
56
|
-
* Many documentation fixes by Juanito Fatas!
|
57
|
-
* Minor readme fix by Will Leinweber
|
58
|
-
|
59
|
-
* 2 minor features:
|
60
|
-
* Displaying the total runtime for a job is suppressed unless interesting
|
61
|
-
* Formatting of large values improved (human vs raw mode)
|
62
|
-
* Contributed by Charles Oliver Nutter
|
63
|
-
|
64
|
-
=== 2.0.0 / 2014-06-18
|
65
|
-
|
66
|
-
* The 'Davy Stevenson' release!
|
67
|
-
* Codename: Springtime Hummingbird Dance
|
68
|
-
|
69
|
-
* Big API refactoring so the internal bits are easier to use
|
70
|
-
* Bump to 2.0 because return types changed to make the API better
|
71
|
-
|
72
|
-
* Contributors added:
|
73
|
-
* Davy Stevenson
|
74
|
-
* Juanito Fatas
|
75
|
-
* Benoit Daloze
|
76
|
-
* Matias
|
77
|
-
* Tony Arcieri
|
78
|
-
* Vipul A M
|
79
|
-
* Zachary Scott
|
80
|
-
* schneems (Richard Schneeman)
|
81
|
-
|
82
|
-
=== 1.0.0 / 2012-03-23
|
83
|
-
|
84
|
-
* 1 major enhancement
|
85
|
-
|
86
|
-
* Birthday!
|
87
|
-
|
data/Manifest.txt
DELETED
data/Rakefile
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# -*- ruby -*-
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'hoe'
|
5
|
-
|
6
|
-
Hoe.plugin :minitest
|
7
|
-
Hoe.plugin :git
|
8
|
-
|
9
|
-
hoe = Hoe.spec 'benchmark-ips' do
|
10
|
-
developer('Evan Phoenix', 'evan@phx.io')
|
11
|
-
|
12
|
-
self.readme_file = 'README.md'
|
13
|
-
|
14
|
-
license "MIT"
|
15
|
-
end
|
16
|
-
|
17
|
-
file "#{hoe.spec.name}.gemspec" => ['Rakefile', "lib/benchmark/ips.rb"] do |t|
|
18
|
-
puts "Generating #{t.name}"
|
19
|
-
File.open(t.name, 'wb') { |f| f.write hoe.spec.to_ruby }
|
20
|
-
end
|
21
|
-
|
22
|
-
desc "Generate or update the standalone gemspec file for the project"
|
23
|
-
task :gemspec => ["#{hoe.spec.name}.gemspec"]
|
24
|
-
|
25
|
-
|
26
|
-
# vim: syntax=ruby
|