Class: BenchmarkDriver::BulkOutput
- Inherits:
-
Object
- Object
- BenchmarkDriver::BulkOutput
- Defined in:
- lib/benchmark_driver/bulk_output.rb
Overview
This is API for your casual output plugin and NOT internally used by BenchmarkDriver.
By fully utilizing with_*/report APIs, you can implement streaming-output plugins. See also: lib/benchmark_driver/output.rb (this class’s instance will be ‘@output`) But using these APIs can be difficult because the API is not stable yet and it’s hard to deal with the complex state machine.
If you don’t need to output results in a streaming manner, you can create an output plugin class that inherits ‘BenchmarkDriver::BulkOutput`, which requires to override only `#bulk_output` that takes all inputs at once.
Instance Method Summary collapse
-
#bulk_output(job_context_result:, metrics:) ⇒ Object
The main API you need to override if you make a class inherit ‘BenchmarkDriver::BulkOutput`.
-
#initialize(metrics:, jobs:, contexts:) ⇒ BulkOutput
constructor
A new instance of BulkOutput.
- #report(result) ⇒ Object
- #with_benchmark(&block) ⇒ Object
- #with_context(context, &block) ⇒ Object
- #with_job(job, &block) ⇒ Object
- #with_warmup(&block) ⇒ Object
Constructor Details
#initialize(metrics:, jobs:, contexts:) ⇒ BulkOutput
Returns a new instance of BulkOutput.
16 17 18 |
# File 'lib/benchmark_driver/bulk_output.rb', line 16 def initialize(metrics:, jobs:, contexts:) @metrics = metrics end |
Instance Method Details
#bulk_output(job_context_result:, metrics:) ⇒ Object
The main API you need to override if you make a class inherit ‘BenchmarkDriver::BulkOutput`.
23 24 25 |
# File 'lib/benchmark_driver/bulk_output.rb', line 23 def bulk_output(job_context_result:, metrics:) raise NotImplementedError.new("#{self.class} must override #bulk_output") end |
#report(result) ⇒ Object
53 54 55 |
# File 'lib/benchmark_driver/bulk_output.rb', line 53 def report(result) @job_context_result[@job][@context] = result end |
#with_benchmark(&block) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/benchmark_driver/bulk_output.rb', line 31 def with_benchmark(&block) @job_context_result = Hash.new do |hash, job| hash[job] = {} end result = block.call bulk_output(job_context_result: @job_context_result, metrics: @metrics) result end |
#with_context(context, &block) ⇒ Object
47 48 49 50 |
# File 'lib/benchmark_driver/bulk_output.rb', line 47 def with_context(context, &block) @context = context block.call end |
#with_job(job, &block) ⇒ Object
41 42 43 44 |
# File 'lib/benchmark_driver/bulk_output.rb', line 41 def with_job(job, &block) @job = job block.call end |
#with_warmup(&block) ⇒ Object
27 28 29 |
# File 'lib/benchmark_driver/bulk_output.rb', line 27 def with_warmup(&block) block.call # noop end |