39
$ 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;
}
4

1 に答える 1

38

マンページman time)を見ると、次のように記載されています。

timeコマンドは、指定された引数を使用して、指定されたプログラムコマンドを実行します。コマンドが終了すると、timeはこのプログラムの実行に関するタイミング統計を示すメッセージを標準出力に書き込みます。これらの統計は、(i)呼び出しから終了までの経過リアルタイム、(ii)ユーザーCPU時間(times(2)によって返される構造体tmsのtms_utime値とtms_cutime値の合計)、および(iii)システムCPU時間(times(2)によって返される構造体tmsのtms_stime値とtms_cstime値の合計)。

ただし、基本的には、user時間はプログラムがCPUで実行されていたsys時間であり、時間は、プログラムがオペレーティングシステムがそのタスクを実行するのを待っていた時間でした。ベンチマークに興味がuser + sysある場合は、使用するのに適した時期です。 real他の実行中のプロセスの影響を受ける可能性があり、より一貫性がありません。

于 2012-04-22T04:20:12.020 に答える