우분투 14.04의 표준 터미널에서 스크립트 time
시간을 사용 하고 있습니다 Perl
.
나는 그것이 스톱워치 시간 이라는 것을 읽었real time
습니다. 사용자로서 내가 프로그램을 시작하고 종료 할 때까지 프로그램을 실행하는 데 소요되는 시간입니다. 그러나 나는 무엇을 얻을하지 않습니다 user
또는 sys
입니다 시간. 맨 페이지 time
는 가장 모호합니다.
그것은 다소 분명하다 동안 것을 real
시간 사이의 분할은 user
하고 sys
그들이 무엇을 나타내는 지 분명하지 않다.
내 스크립트에서 나는 차이점을보기 위해 C ++과 Perl을 서로 벤치마킹하고 있으며 실제로 어떤 데이터를 얻고 있는지 알고 싶다. 출력 예는 다음과 같습니다.
real 0m24.198s
user 0m23.120s
sys 0m1.030s
누군가 기본 시간 형식이 사용자에게 말하는 내용을 자세히 설명해 주시겠습니까? 나는 리눅스에 초보자이므로 너무 많이 가정하지 마십시오.
[1] 흥미롭게도 C ++은 real
시간 과 관련하여 벤치 마크에서 Perl보다 훨씬 빠르지 만 sys
C ++은 실제로 sys
Perl보다 더 많은 시간을 사용하므로 시간 은 그다지 다르지 않습니다 . 이것이 그들이 무엇을 의미하는지 알고 싶어하는 이유입니다
답변
에서 위키 피 디아 :
- 사용자 시간 대 시스템 시간
‘사용자 CPU 시간’이라는 용어는 처음에는 약간 오해의 소지가 있습니다. 분명히, 총 CPU 시간은 CPU가 프로그램에 대한 일부 조치를 수행하는 데 소요 된 시간과 CPU가 프로그램을 대신하여 커널에 대한 시스템 호출을 수행하는 데 소요 된 시간의 조합입니다. 프로그램이 배열을 반복하면 사용자 CPU 시간이 누적됩니다. 반대로, 프로그램이 exec 또는 fork와 같은 시스템 호출을 실행하면 시스템 CPU 시간이 누적됩니다.
- 실시간 대 CPU 시간
이 문맥에서 “실시간”이라는 용어는 스톱워치 사용과 같이 경과 된 “벽시계”시간을 의미합니다. 총 CPU 시간 (사용자 시간 + 시스템 시간)은 해당 값보다 크거나 작을 수 있습니다. 프로그램이 대기하고 시간이 전혀 걸리지 않기 때문에 (사용자 모드 또는 시스템 모드에 관계없이) 실시간은 총 CPU 시간보다 클 수 있습니다. 프로그램이 CPU 시간 (사용자 및 sys 모두)이 time 명령에 의해보고 된 값에 추가 된 하위를 포크 할 수 있으므로 총 CPU 시간은 실시간보다 클 수 있습니다.