Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@tomoyk

timeよりスゴイ! multitimeを使って実行時間を計測

multitimeとは

timeコマンドは,コマンドの実行時間を計測するコマンドです.
multitimeコマンドは,コマンドを繰り返し発行し,実行時間を計測するコマンドです.

実行例

multitimeコマンドに -n オプションで実行する回数を渡します.
以下は,multitimeコマンドを使いsleep 1を5回実行しています.

$ multitime -n 5 sleep 1
===> multitime results
1: sleep 1
            Mean        Std.Dev.    Min         Median      Max
real        1.012       0.002       1.010       1.012       1.015       
user        0.001       0.000       0.000       0.001       0.001       
sys         0.002       0.000       0.002       0.002       0.003

インストール方法

Ubuntuの場合はパッケージがあるので,コマンド1つでインストールできます.

sudo apt install multitime

Homebrewもパッケージがあります.

brew install multitime

ビルドしてインストールする場合は以下のリンクを参照してください.

Laurence Tratt: multitime

基本的な使い方

sleep 1を5回実行した時間を計測し,結果を出力します..

$ multitime -n 5 sleep 1
===> multitime results
1: sleep 1
            Mean        Std.Dev.    Min         Median      Max
real        1.010       0.001       1.008       1.010       1.011       
user        0.000       0.000       0.000       0.000       0.000       
sys         0.002       0.000       0.001       0.002       0.002

平均時間のみ出力

sleep 1を5回実行した平均時間だけを出力します.

$ multitime -p -n 5 sleep 1
real         1.01
user         0.00
sys          0.00

標準出力を別コマンドに渡す

sleep 1を3回実行した平均時間だけを出力します.また,3回それぞれの実行結果を cowsay コマンドに標準入力として渡します.これは, sleep 1; date | cowsay を3回実行した場合と同様の結果が得られます.

$ multitime -p -n 3 -o cowsay bash -c "sleep 1; date"
 _____________________________ 
/ 2021年 5月14日 金曜日 \
\ 14時44分55秒 JST         /
 ----------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 _____________________________ 
/ 2021年 5月14日 金曜日 \
\ 14時44分56秒 JST         /
 ----------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 _____________________________ 
/ 2021年 5月14日 金曜日 \
\ 14時44分58秒 JST         /
 ----------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
real         1.02
user         0.00
sys          0.01

上記は,-s オプションを使うことで以下に書き換えられます.-s オプションは指定がない場合,ランダムな待ち時間になるため,上記とは厳密には異なります.

$ multitime -p -n 3 -o cowsay -s 1 date
 _____________________________ 
/ 2021年 5月14日 金曜日 \
\ 14時51分32秒 JST         /
 ----------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 _____________________________ 
/ 2021年 5月14日 金曜日 \
\ 14時51分33秒 JST         /
 ----------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 _____________________________ 
/ 2021年 5月14日 金曜日 \
\ 14時51分33秒 JST         /
 ----------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
real         0.00
user         0.00
sys          0.00

発展した使い方

SSH先でmultitimeを実行

以下のコマンドでは,遠隔のホストにSSH接続を行いsleep 10 を10回実行します.その後,sleep 1を1回実行してSSHを切断します.事前に遠隔ホストにmultitimeコマンドのインストールが必要です.

ssh admin@host "(multitime -p -n 10 bash -c \"sleep 10\"; sleep 1;)"

realだけを出力

realだけを計測したい場合は以下のコマンドを実行します.以下では,sleep 4を3回実行した結果の real を含む行の第2フィールド(数値)だけを絞って出力します.

$ multitime -p -n 3 sleep 4 2>&1 >/dev/null | grep real | awk '{print $2}'
4.01

余談

同様のコマンドでsharkdp/hyperfineを見つけました.

@kazuho さんのツイートで見つけました.研究のデータ測定で大活躍しました.

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tomoyk
🍣🍺🎊
cdsl
東京工科大学コンピュータサイエンス学部クラウド・分散システム研究室

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?