Sha256: d9a7bfe03bfb04c7c60cad196f1277ac98d988ab51bf341fba1ccf9ca7bc1506
Contents?: true
Size: 1.71 KB
Versions: 30
Compression:
Stored size: 1.71 KB
Contents
#!/usr/bin/ruby latest=[] class CallNode attr_accessor :name, :time, :children, :queries, :query_time def initialize(name) @name = name @children = Array.new @queries = 0 @query_time = 0 @time = 0 end def to_s name end def print_tree(depth) child_time=children.inject(0) {|total,c| c.time.to_f + total} || 0 printf "%s %-40s %f q=%-3d (%f) o=%f\n", " "*depth, name, time, queries, query_time, time-child_time-query_time #" " "*depth+"** #{name} #{time} #{time-child_time} #{queries} queries (#{query_time})" children.each do |child| child.print_tree(depth+1) end end def averages(average_hash = Hash.new) average_hash[name] ||= Array.new average_hash[name].push time children.each { |child| child.averages(average_hash) } average_hash end end def putsi(depth,string) puts " "*depth + string end root=CallNode.new('ROOT') latest=[root] ARGF.each_line do |line| case line when /^Processing ([a-zA-Z0-9_]+#[a-z_]+)/ # putsi latest.size, "Starting #{$1}" node = CallNode.new($1) latest.last.children << node latest.push node when /^End of component rendering/ nil when /\(([0-9.]+)\).*SELECT/ latest.last.queries += 1 latest.last.query_time += $1.to_f when /^Completed in ([0-9.]+)/ latest.last.time=$1.to_f latest.pop when /^BENCHMARK: (.*) \((.*)\)/ node = CallNode.new($1) node.time = $2.to_f latest.last.children << node end end root.print_tree(0) puts "\nAverages:" averages = root.averages averages.keys.sort.each do |name| printf " %-40s %8f\n",name,(averages[name].inject(0) {|sum,time| sum+time})/averages[name].size end
Version data entries
30 entries across 30 versions & 1 rubygems