benchmark_driver 0.13.0 → 0.13.1

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
- SHA1:
3
- metadata.gz: 8d80a15877a535548463502efb2a1a39b708c3e7
4
- data.tar.gz: 8a569023b7cde0b811f4bfc96c13587e863a7e1d
2
+ SHA256:
3
+ metadata.gz: 53657321ac74e0c39a11ae6b2ed12ad00e54aae56afc72895554bf7ed9ca2c4f
4
+ data.tar.gz: e201229fddbf15331045d7098df78b89a5e91a472c58af8b05dc299bafdc5b9f
5
5
  SHA512:
6
- metadata.gz: 2d44bf5752e35b615c219916d45828e0e535729b2290ca590d6c3d16b4ed8928afb2c66cdac65609af78f85792374a1715089efad2b6921f1616bcc43c74b824
7
- data.tar.gz: a8744d5d19ac34aaf2951a6f7704a2fddc6f4eeeb7a9e079808a59469db16723b03aeff09a9d79b6563f8bda92795e8f99f1539225ffe28bc1b342e554443143
6
+ metadata.gz: 5a47674867279c0064e91f55bce5b4305f0b49866bf9c37f912dc3f4743e091df4d18de8645d0f005aef89112f996e4a86e50d6840352312ca9108cb69d8eccc
7
+ data.tar.gz: 9b34342a2989fd21197181e4a59083a313ed4f13e6a728a1918190299c0104faa6c90ee12d046a3a380f953785a2c7c148b2b2b5fa189d4f507e0cb4043760a9
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
+ # v0.13.1
2
+
3
+ - Respect a magic comment in `prelude`
4
+
1
5
  # v0.13.0
2
6
 
3
7
  - Add support for benchmark with different versions of gems and preludes
8
+ - Only YAML is supported for now, Ruby interface will come later
4
9
  - [breaking change] Runner plugin interface is sightly changed
5
10
 
6
11
  # v0.12.0
data/README.md CHANGED
@@ -170,7 +170,7 @@ end
170
170
 
171
171
  With following `blank_loop.yml`,
172
172
 
173
- ```
173
+ ```yml
174
174
  loop_count: 20000000
175
175
  prelude: |
176
176
  class Array
@@ -70,7 +70,7 @@ class BenchmarkDriver::Runner::Ips
70
70
  # @param [BenchmarkDriver::Context] context
71
71
  def run_warmup(job, context:)
72
72
  warmup = WarmupScript.new(
73
- prelude: "#{context.prelude}\n#{job.prelude}",
73
+ preludes: [context.prelude, job.prelude],
74
74
  script: job.script,
75
75
  teardown: job.teardown,
76
76
  loop_count: job.loop_count,
@@ -93,7 +93,7 @@ class BenchmarkDriver::Runner::Ips
93
93
  # @return [BenchmarkDriver::Metrics]
94
94
  def run_benchmark(job, context:)
95
95
  benchmark = BenchmarkScript.new(
96
- prelude: "#{context.prelude}\n#{job.prelude}",
96
+ preludes: [context.prelude, job.prelude],
97
97
  script: job.script,
98
98
  teardown: job.teardown,
99
99
  loop_count: job.loop_count,
@@ -136,15 +136,16 @@ class BenchmarkDriver::Runner::Ips
136
136
  end
137
137
 
138
138
  def execute(*args)
139
- IO.popen(args, &:read) # handle stdout?
139
+ stdout = IO.popen(args, &:read) # handle stdout?
140
140
  unless $?.success?
141
141
  raise "Failed to execute: #{args.shelljoin} (status: #{$?.exitstatus})"
142
142
  end
143
143
  end
144
144
 
145
- WarmupScript = ::BenchmarkDriver::Struct.new(:prelude, :script, :teardown, :loop_count, :first_warmup_duration, :second_warmup_duration) do
145
+ WarmupScript = ::BenchmarkDriver::Struct.new(:preludes, :script, :teardown, :loop_count, :first_warmup_duration, :second_warmup_duration) do
146
146
  # @param [String] result - A file to write result
147
147
  def render(result:)
148
+ prelude = preludes.reject(&:nil?).reject(&:empty?).join("\n")
148
149
  <<-RUBY
149
150
  #{prelude}
150
151
 
@@ -188,9 +189,10 @@ File.write(#{result.dump}, [__bmdv_duration, __bmdv_loops].inspect)
188
189
  # @param [String] script
189
190
  # @param [String] teardown
190
191
  # @param [Integer] loop_count
191
- BenchmarkScript = ::BenchmarkDriver::Struct.new(:prelude, :script, :teardown, :loop_count) do
192
+ BenchmarkScript = ::BenchmarkDriver::Struct.new(:preludes, :script, :teardown, :loop_count) do
192
193
  # @param [String] result - A file to write result
193
194
  def render(result:)
195
+ prelude = preludes.reject(&:nil?).reject(&:empty?).join("\n")
194
196
  <<-RUBY
195
197
  #{prelude}
196
198
 
@@ -62,7 +62,7 @@ class BenchmarkDriver::Runner::Memory
62
62
  # @return [BenchmarkDriver::Metrics]
63
63
  def run_benchmark(job, context:)
64
64
  benchmark = BenchmarkScript.new(
65
- prelude: "#{context.prelude}\n#{job.prelude}",
65
+ preludes: [context.prelude, job.prelude],
66
66
  script: job.script,
67
67
  teardown: job.teardown,
68
68
  loop_count: job.loop_count,
@@ -103,8 +103,9 @@ class BenchmarkDriver::Runner::Memory
103
103
  # @param [String] script
104
104
  # @param [String] teardown
105
105
  # @param [Integer] loop_count
106
- BenchmarkScript = ::BenchmarkDriver::Struct.new(:prelude, :script, :teardown, :loop_count) do
106
+ BenchmarkScript = ::BenchmarkDriver::Struct.new(:preludes, :script, :teardown, :loop_count) do
107
107
  def render
108
+ prelude = preludes.reject(&:nil?).reject(&:empty?).join("\n")
108
109
  <<-RUBY
109
110
  #{prelude}
110
111
  #{while_loop(script, loop_count)}
@@ -51,7 +51,7 @@ class BenchmarkDriver::Runner::Once
51
51
  # @return [Float] duration
52
52
  def run_benchmark(job, context:)
53
53
  benchmark = BenchmarkScript.new(
54
- prelude: "#{context.prelude}\n#{job.prelude}",
54
+ preludes: [context.prelude, job.prelude],
55
55
  script: job.script,
56
56
  teardown: job.teardown,
57
57
  loop_count: job.loop_count,
@@ -90,9 +90,10 @@ class BenchmarkDriver::Runner::Once
90
90
  # @param [String] script
91
91
  # @param [String] teardown
92
92
  # @param [Integer] loop_count
93
- BenchmarkScript = ::BenchmarkDriver::Struct.new(:prelude, :script, :teardown, :loop_count) do
93
+ BenchmarkScript = ::BenchmarkDriver::Struct.new(:preludes, :script, :teardown, :loop_count) do
94
94
  # @param [String] result - A file to write result
95
95
  def render(result:)
96
+ prelude = preludes.reject(&:nil?).reject(&:empty?).join("\n")
96
97
  <<-RUBY
97
98
  #{prelude}
98
99
  __bmdv_before = Time.now
@@ -1,3 +1,3 @@
1
1
  module BenchmarkDriver
2
- VERSION = '0.13.0'
2
+ VERSION = '0.13.1'
3
3
  end
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.13.0
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-02 00:00:00.000000000 Z
11
+ date: 2018-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -143,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  version: '0'
144
144
  requirements: []
145
145
  rubyforge_project:
146
- rubygems_version: 2.6.14.1
146
+ rubygems_version: 2.7.6
147
147
  signing_key:
148
148
  specification_version: 4
149
149
  summary: Fully-featured accurate benchmark driver for Ruby