# File lib/puppet/util.rb, line 150
150:     def benchmark(*args)
151:         msg = args.pop
152:         level = args.pop
153:         object = nil
154: 
155:         if args.empty?
156:             if respond_to?(level)
157:                 object = self
158:             else
159:                 object = Puppet
160:             end
161:         else
162:             object = args.pop
163:         end
164: 
165:         unless level
166:             raise Puppet::DevError, "Failed to provide level to :benchmark"
167:         end
168: 
169:         unless level == :none or object.respond_to? level
170:             raise Puppet::DevError, "Benchmarked object does not respond to %s" % level
171:         end
172: 
173:         # Only benchmark if our log level is high enough
174:         if level != :none and Puppet::Util::Log.sendlevel?(level)
175:             result = nil
176:             seconds = Benchmark.realtime {
177:                 yield
178:             }
179:             object.send(level, msg + (" in %0.2f seconds" % seconds))
180:             return seconds
181:         else
182:             yield
183:         end
184:     end