mirror of
https://github.com/ruby/ruby.git
synced 2025-09-20 02:53:57 +02:00

You can use "measure" command to check performance in IRB like below:
irb(main):001:0> 3
=> 3
irb(main):002:0> measure
TIME is added.
=> nil
irb(main):003:0> 3
processing time: 0.000058s
=> 3
irb(main):004:0> measure :off
=> nil
irb(main):005:0> 3
=> 3
You can set "measure :on" by "IRB.conf[:MEASURE] = true" in .irbrc, and, also,
set custom performance check method:
IRB.conf[:MEASURE_PROC][:CUSTOM] = proc { |context, code, line_no, &block|
time = Time.now
result = block.()
now = Time.now
puts 'custom processing time: %fs' % (Time.now - time) if IRB.conf[:MEASURE]
result
}
3899eaf2e2
34 lines
786 B
Ruby
34 lines
786 B
Ruby
require_relative "nop"
|
|
|
|
# :stopdoc:
|
|
module IRB
|
|
module ExtendCommand
|
|
class Measure < Nop
|
|
def initialize(*args)
|
|
super(*args)
|
|
end
|
|
|
|
def execute(type = nil, arg = nil)
|
|
case type
|
|
when :off
|
|
IRB.conf[:MEASURE] = nil
|
|
IRB.unset_measure_callback(arg)
|
|
when :list
|
|
IRB.conf[:MEASURE_CALLBACKS].each do |type_name, _|
|
|
puts "- #{type_name}"
|
|
end
|
|
when :on
|
|
IRB.conf[:MEASURE] = true
|
|
added = IRB.set_measure_callback(type)
|
|
puts "#{added.first} is added."
|
|
else
|
|
IRB.conf[:MEASURE] = true
|
|
added = IRB.set_measure_callback(type)
|
|
puts "#{added.first} is added."
|
|
end
|
|
nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
# :startdoc:
|