$ time ./Test
real 0m2.906s
user 0m2.887s
sys 0m0.017s
プログラムコードは次のとおりです。
#include <iostream>
#include <map>
void func_a() {
std::map<int, int> m;
for (unsigned int i = 0; i < 10000; i++) {
m.insert(std::pair<int, int>(i, i));
}
}
void func_b() {
std::map<int, int> m;
for (unsigned int i = 0; i < 1000000; i++) {
m.insert(std::pair<int, int>(i, i));
}
}
int main() {
func_a();
func_b();
return 0;
}
manpage (man time
)、それは述べています:
Timeコマンドは、指定された引数で指定されたプログラムコマンドを実行します。コマンドが終了すると、timeは、このプログラムの実行に関するタイミング統計を示すメッセージを標準出力に書き込みます。これらの統計は、(i)呼び出しと終了の間の経過したリアルタイム、(ii)ユーザーCPU時間(times(2)によって返されるstruct tmsのtms_utimeとtms_cutime値の合計)、および(iii)システムCPU時間(times(2)によって返される構造体tmsのtms_stime値とtms_cstime値の合計)。
基本的に、user
時間はプログラムがCPU上で実行されている時間であり、sys
時間はプログラムがオペレーティングシステムがタスクを実行するのを待っている時間です。ベンチマークに興味がある場合は、user + sys
は使用するのに適した時間です。 real
は、実行中の他のプロセスの影響を受ける可能性があり、より一貫性がありません。