benchmark_driver 0.13.0 → 0.13.1

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
- 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