system.time() 関数は、コードの実行にかかる時間を見積もるために使用されるツールの 1 つです。その出力には、ユーザー、システム、経過時間 (秒) の 3 つの値が示されます。
プログラムの合計消費時間は 3 つの合計です。
ここで、経過時間 (elapsed): コード ブロックの実行中の経過時間を測定します。ユーザーとシステムを組み合わせて、CPU がコードのブロックを実行するのにかかる時間を測定します。
ユーザー時間: ユーザー アプリケーション コード (R コード) の処理に費やされた CPU 時間です。ユーザー アプリケーションがシステム リソースにアクセスする場合、この処理時間はシステム時間として報告されます。
ユーザー時間とシステム時間の違いを理解するには、次の 2 つの例を使用してください。
R は 1000 回計算し、1 回だけ出力します。
system.time({
x=0
for(i in 1:1000){
x = x+1
}
print(x)
})
出力は次のとおりです。
ユーザー時間 (user) は正の値ですが、システム時間 (system) はほとんどの場合、ほぼ 0 です。
上記のコードと比較すると、次のコードは同じ操作を実行しますが、出力は 1000 回行われます。
system.time({
x=1
for(i in 1:1000){
x = x+1
print(x)
}
})
出力は次のとおりです。
上記の結果から、1000 個の print ステートメントにより R がオペレーティング システムの入出力リソースにアクセスできるため、システム時間も正であることがわかります。
経過時間 (elapsed) を説明するために、次のコードは CPU が長時間アイドル状態である例を示しています。
system.time({
Sys.sleep(5) # Time in seconds.
})
出力は次のとおりです。
経過時間は CPU 時間をはるかに上回っており、コードは何も実行していないため、指定されたスリープ時間とほぼ同じです。
参考: