Вы можете использовать time
и анализировать результаты
require 'open3'
command = './script1 argX'
stdout,stderr,status = Open3.capture3("time #{command}")
results = {}
stderr.split("\n").each do |line|
unless line.blank?
result_type,result = line.split("\t")
results[result_type] = result
end
end
puts "Clock time was #{results['real']}"
time
выводит формат, подобный
real 0m0.003s
user 0m0.001s
sys 0m0.002s
, и выводит его на стандартную ошибку, поэтому нам нужно использовать Open3
, чтобы получить его (и дифференцировать его от выходных данных вашего скрипта, которые, мы надеемся, не будут конфликтовать с выходными данными time
).
Обратите внимание, чтоtime имеет «форматированный» вывод за прошедшее время, поэтому вам может потребоваться выполнить некоторый анализ, чтобы перевести его в необработанный формат в миллисекундах.