ruby/lib/irb/cmd/measure.rb
aycabta 9f08e3c703 [ruby/irb] Add measure command
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
2020-12-20 16:23:59 +09:00

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: