Class: Puppet::Util::Profiler::AroundProfiler Private
- Defined in:
- lib/puppet/util/profiler/around_profiler.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
A Profiler that can be used to wrap around blocks of code. It is configured with other profilers and controls them to start before the block is executed and finish after the block is executed.
Instance Method Summary collapse
- #add_profiler(profiler) ⇒ Object private
-
#clear ⇒ Object
private
Reset the profiling system to the original state.
-
#current ⇒ Object
private
Retrieve the current list of profilers.
-
#initialize ⇒ AroundProfiler
constructor
private
A new instance of AroundProfiler.
-
#profile(message, metric_id) ⇒ Object
private
Profile a block of code and log the time it took to execute.
- #remove_profiler(profiler) ⇒ Object private
Constructor Details
#initialize ⇒ AroundProfiler
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of AroundProfiler.
8 9 10 |
# File 'lib/puppet/util/profiler/around_profiler.rb', line 8 def initialize @profilers = [] end |
Instance Method Details
#add_profiler(profiler) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
28 29 30 31 |
# File 'lib/puppet/util/profiler/around_profiler.rb', line 28 def add_profiler(profiler) @profilers << profiler profiler end |
#clear ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Reset the profiling system to the original state
15 16 17 |
# File 'lib/puppet/util/profiler/around_profiler.rb', line 15 def clear @profilers = [] end |
#current ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Retrieve the current list of profilers
22 23 24 |
# File 'lib/puppet/util/profiler/around_profiler.rb', line 22 def current @profilers end |
#profile(message, metric_id) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Profile a block of code and log the time it took to execute.
This outputs logs entries to the Puppet masters logging destination providing the time it took, a message describing the profiled code and a leaf location marking where the profile method was called in the profiled hierarchy.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/puppet/util/profiler/around_profiler.rb', line 50 def profile(, metric_id) retval = nil contexts = {} @profilers.each do |profiler| contexts[profiler] = profiler.start(, metric_id) end begin retval = yield ensure @profilers.each do |profiler| profiler.finish(contexts[profiler], , metric_id) end end retval end |
#remove_profiler(profiler) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
35 36 37 |
# File 'lib/puppet/util/profiler/around_profiler.rb', line 35 def remove_profiler(profiler) @profilers.delete(profiler) end |