# File lib/puppet/util.rb, line 167
167:   def benchmark(*args)
168:     msg = args.pop
169:     level = args.pop
170:     object = nil
171: 
172:     if args.empty?
173:       if respond_to?(level)
174:         object = self
175:       else
176:         object = Puppet
177:       end
178:     else
179:       object = args.pop
180:     end
181: 
182:     raise Puppet::DevError, "Failed to provide level to :benchmark" unless level
183: 
184:     unless level == :none or object.respond_to? level
185:       raise Puppet::DevError, "Benchmarked object does not respond to #{level}"
186:     end
187: 
188:     # Only benchmark if our log level is high enough
189:     if level != :none and Puppet::Util::Log.sendlevel?(level)
190:       result = nil
191:       seconds = Benchmark.realtime {
192:         yield
193:       }
194:       object.send(level, msg + (" in %0.2f seconds" % seconds))
195:       return seconds
196:     else
197:       yield
198:     end
199:   end