view distributed/weighttp/calc_sd_from_log.rb @ 22:d6d3b7180e6d

Added calc_sd_from_log.rb
author Nobuyasu
date Thu, 30 Jan 2014 21:48:09 +0900
parents
children 446a5c242cc7
line wrap: on
line source

#!/usr/local/bin/ruby
include Math

if ARGV.size() < 1 then
  puts "Usage:ruby parse_log.rb filename"
  exit
end

def get_log_time(filename)
  logArray = File.open(filename, "r") do |file|
     file.readlines.select{|line| !(line =~ /mass/) }
  end 
  totalFailed = 0
  totalTime = 0
  timeArray = []
  logArray.each {|line|
    tokens = line.split(' ')
    float = sprintf( "%.0f",tokens[2].to_i)
    time = tokens[0]. + "." + float.to_s
    timeArray.push(time.to_f)
    totalTime = totalTime + time.to_f
    totalFailed = totalFailed + tokens[4].to_i
  }
  avarage = totalTime / timeArray.size()
  avarage = sprintf("%.3f", avarage).to_f
  totalN = 0
  puts "avarage: "+ avarage.to_s
  timeArray.each {|time|
    totalN = totalN + (time.to_f - avarage)
    totalN = sprintf("%.3f", totalN).to_f
    puts "time: "+ time.to_s
    puts "time - avarage :" + sprintf("%.3f",(time - avarage).to_s)
    puts "totalN: "+totalN.to_s
  }
  variance = totalN / timeArray.size()
  variance = sprintf("%.3f", variance).to_f
  puts "variance: " + variance.to_s
  sigma = Math.sqrt(variance)
  puts sigma
  if totalFailed != 0 then puts "Failed " + totalFailed.to_s end
end

ARGV.each {|filename|
 get_log_time(filename)
}