system.time(expression)
R 함수의 실행 시간을 측정 하는 데 사용 하고 있습니다.
호출에 대한 출력
system.time(myfunction())
is :
user system elapsed
117.36 5.65 127.86
'사용자'와 '시스템'은 무엇을 측정합니까?
system.time(expression)
R 함수의 실행 시간을 측정 하는 데 사용 하고 있습니다.
호출에 대한 출력
system.time(myfunction())
is :
user system elapsed
117.36 5.65 127.86
'사용자'와 '시스템'은 무엇을 측정합니까?
답변:
이것은 ?proc.time
( system.time()
클래스의 객체를 반환) 에서 논의됩니다 "proc.time"
.
Details:
‘proc.time’ returns five elements for backwards compatibility, but
its ‘print’ method prints a named vector of length 3. The first
two entries are the total user and system CPU times of the current
R process and any child processes on which it has waited, and the
third entry is the ‘real’ elapsed time since the process was
started.
....과
Value:
....
The definition of ‘user’ and ‘system’ times is from your OS.
Typically it is something like
_The ‘user time’ is the CPU time charged for the execution of user
instructions of the calling process. The ‘system time’ is the CPU
time charged for execution by the system on behalf of the calling
process._
분명한 설명은 내가 이제까지의 차이에 읽은 user
및 system
경과 시간에 의해 제공되었다 [R-도움말]에 윌리엄 던랩 :
"사용자 CPU 시간"은 현재 프로세스 (즉, 현재 R 세션)에서 소비 한 CPU 시간을 제공하고 "시스템 CPU 시간"은 현재 프로세스를 대신하여 커널 (운영 체제)에서 소비 한 CPU 시간을 제공합니다. 운영 체제는 파일 열기, 입력 또는 출력 수행, 다른 프로세스 시작, 시스템 시계보기 (많은 프로세스가 공유해야하는 리소스를 포함하는 작업)와 같은 작업에 사용됩니다.
?proc.time
비슷한 것을 반환 하지만 이 설명은 저에게 훨씬 더 이해하기 쉬웠습니다.
어쨌든 위키 백과에서 일반적이기 때문에 :
'사용자 CPU 시간'이라는 용어는 처음에는 약간 오해의 소지가 있습니다. 명확하게 말하면, 총 시간 (실제 CPU 시간)은 CPU가 프로그램에 대해 일부 작업을 수행하는 데 소비하는 시간과 CPU가 프로그램을 대신하여 커널에 대한 시스템 호출을 수행하는 데 소비하는 시간의 조합입니다. 프로그램이 배열을 반복 할 때 사용자 CPU 시간이 누적됩니다. 반대로 프로그램이 exec 또는 fork와 같은 시스템 호출을 실행하면 시스템 CPU 시간이 누적됩니다.
http://en.wikipedia.org/wiki/Time_(Unix)#User_Time_vs_System_Time
이러한 시간 변수는 OS에 의해 정의 man time
되므로 셸 (Unix에서)에서 실행 하여 계산 방법에 대한 정보를 검색 할 수 있습니다 .
...이 통계는 (i) 호출과 종료 사이의 실시간 경과 시간, (ii) 사용자 CPU 시간 ( 시간 (2)에 의해 반환 된 구조체 tms 의
tms_utime
및tms_cutime
값 의 합 ) 및 (iii)로 구성됩니다. 시스템 CPU 시간 ( times (2)에 의해 반환 된 구조체 tms 의tms_stime
및tms_cstime
값 의 합 )
언급 된 시간 변수의 정의는 여기에서 찾을 수 있습니다 .
tms_utime
사용자 CPU 시간.
tms_stime
시스템 CPU 시간.
tms_cutime
종료 된 하위 프로세스의 사용자 CPU 시간입니다.
tms_cstime
종료 된 하위 프로세스의 시스템 CPU 시간입니다.
사용자와 시스템 시간의 차이에 대한 설명은 daroczig의 답변과 SO의 다른 곳에 설명되어 있습니다 .
tms_utime
요소는 코드를 실행하는 데 걸린 시간의 양, 또는 C 라이브러리의 코드입니다.tms_stime
요소는 사용자를 대신하여 코드를 실행 커널에서 보낸 시간의 양입니다.