class BenchmarkDriver::Runner::Memory

def extract_maxresident_from_time_output(output)

def extract_maxresident_from_time_output(output)
  case Etc.uname.fetch(:sysname)
  when 'Linux'
    pattern = /^(?<user>\d+.\d+)user\s+(?<system>\d+.\d+)system\s+(?<elapsed1>\d+):(?<elapsed2>\d+.\d+)elapsed.+\([^\s]+\s+(?<maxresident>\d+)maxresident\)k$/
    scale = 1000.0 # kilobytes -> bytes
  when 'Darwin'
    pattern = /^\s+(?<real>\d+\.\d+)\s+real\s+(?<user>\d+\.\d+)\s+user\s+(?<system>\d+\.\d+)\s+sys$\s+(?<maxresident>\d+)\s+maximum resident set size$/
    scale = 1.0
  end
  match_data = pattern.match(output)
  raise "Unexpected format given from /usr/bin/time:\n#{out}" unless match_data[:maxresident]
  Integer(match_data[:maxresident]) * scale
end