Class: RegoValidate::Profiler

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby/rego/cli/profiling.rb

Overview

Captures timing and memory statistics for policy evaluation.

Defined Under Namespace

Classes: ByteFormatter, Delta, Measurement, Sample, Snapshot

Instance Method Summary collapse

Constructor Details

#initialize(stderr: $stderr) ⇒ Profiler

Returns a new instance of Profiler.

Parameters:

  • stderr (IO) (defaults to: $stderr)


175
176
177
178
179
# File 'lib/ruby/rego/cli/profiling.rb', line 175

def initialize(stderr: $stderr)
  @stderr = stderr
  @samples = [] # @type var @samples: Array[Sample]
  @clock = Process.method(:clock_gettime)
end

Instance Method Details

#measure(label) ⇒ Object

Parameters:

  • label (String)

Returns:

  • (Object)


183
184
185
186
187
188
189
# File 'lib/ruby/rego/cli/profiling.rb', line 183

def measure(label)
  measurement = start_measurement(label)
  result = yield
  result
ensure
  finish_measurement(measurement)
end

#reportvoid

This method returns an undefined value.



192
193
194
195
196
197
198
# File 'lib/ruby/rego/cli/profiling.rb', line 192

def report
  return if samples.empty?

  stderr.puts("Profile:")
  report_samples
  report_hotspot
end