Sha256: 3cc435b1b92e61acd1063ef2fe278ac2515d2f2d9a9c4b21421190567c43d0e4

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

class SortedBench < Liza::Bench

  def self.call args
    log "args = #{args.inspect}"

    # https://rubyapi.org/3.1/o/benchmark
    require "benchmark"

    if @setup_bl
      log "Setting up..."
      instance_exec &@setup_bl
      log "Set up"
    end

    log "Benchmarking #{marks.count} Ruby Blocks"
    puts

    length = marks.keys.map(&:length).max

    marks.each do |label, bl|
      log "Benchmarking #{label}"
      marks[label] = Benchmark.measure label, &bl
    end

    puts

    log "#{"Reporting".ljust_blanks(length + 17)} App CPU Time   Kernel CPU Time    Total CPU Time"
    puts

    sorted = marks.sort_by { |_k, tms| tms.total }.to_h

    sorted.each.with_index do |(label, tms), i|
      tms = tms.format "%10.6u     %10.6y         %10.6t"
      s = "[#{i.next.to_s.rjust_zeroes 2}/#{marks.count.to_s.rjust_zeroes 2}]      #{label.rjust_blanks length}   #{tms}"

      s = s.green if i == 0
      s = s.red if i == marks.count-1
      log s
    end
    puts
    log "Done"
  end

  #

  def self.marks()= @marks ||= {}

  def self.mark(label, &block)= marks[label] = block

  def self.setup &block
    @setup_bl = block if block_given?
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lizarb-1.0.4 app_new/dev/benches/sorted_bench.rb