programing

이해하는 시간.perf_counter() 및 time.process_time()

golfzon 2023. 5. 9. 23:26
반응형

이해하는 시간.perf_counter() 및 time.process_time()

새로운 기능에 대해 몇 가지 질문이 있습니다.time.perf_counter()그리고.time.process_time().

전자의 경우 설명서에서 다음을 참조하십시오.

성능 카운터의 값(분수초)을 반환합니다. 즉, 짧은 지속 시간을 측정하기 위해 사용 가능한 분해능이 가장 높은 시계입니다.여기에는 수면 중 경과된 시간이 포함되며 시스템 전체에 적용됩니다.반환된 값의 기준점이 정의되지 않아 연속 호출 결과 간의 차이만 유효합니다.

이 '최고 해상도'는 모든 시스템에서 동일합니까?또는 Linux 또는 Windows를 사용하는 경우 항상 약간씩 의존합니까?
질문은 다음의 문서를 읽는 것에서 비롯됩니다.time.time()'모든 시스템이 1초 이상의 정확도로 시간을 제공하는 것은 아닙니다.'라고 되어 있는데 어떻게 하면 지금보다 더 나은 해상도를 제공할 수 있을까요?

후자에 대해서는,time.process_time():

현재 프로세스의 시스템 및 사용자 CPU 시간 합계 값(분수초)을 반환합니다.수면 중 경과된 시간은 포함되지 않습니다.정의상 프로세스 전체에 걸쳐 있습니다.반환된 값의 기준점이 정의되지 않아 연속 호출 결과 간의 차이만 유효합니다.

이해할 수 없습니다. '시스템 시간'과 '사용자 CPU 시간'은 무엇입니까?뭐가 달라요?

이 맥락에서 '시간'에는 절대 시간과 상대 시간의 두 가지 유형이 있습니다.

절대 시간은 '실제 시간'으로, 다음과 같이 반환됩니다.time.time()그리고 우리 모두가 다루는 것에 익숙합니다.일반적으로 최소 1초의 해상도로 과거의 고정된 시점(예: UNIX epoch on 01/01/1970)에서 측정됩니다.최신 시스템은 일반적으로 밀리초 또는 마이크로초의 해상도를 제공합니다.대부분의 컴퓨터에서 전용 하드웨어로 유지 관리되며, RTC(실시간 시계) 회로는 일반적으로 배터리로 작동하므로 시스템은 전원 공급 간의 실시간을 추적합니다.또한 이 '실시간'은 사용자의 위치(시간대)와 계절(낮에 절약되는 일광)에 따라 변경되거나 UTC(GMT 또는 줄루 시간)로부터의 오프셋으로 표시됩니다.

인 시간이 , 상대적인 두번째상, 시다있며으반이, 같이다니환됩과음이 반환합니다.time.perf_counter그리고.time.process_time이러한 유형의 시간은 시스템 및 구현에 특정적이라는 점에서 실제 시간과 정의된 관계가 없습니다.시간 간격, 즉 두 순간 사이의 경과 시간에 비례하는 단위가 없는 값을 측정하는 데만 사용할 수 있습니다.이것은 주로 상대적인 성능을 평가하는 데 사용됩니다(예: 이 버전의 코드가 해당 버전의 코드보다 더 빨리 실행되는지 여부).

현대 시스템에서는 CPU의 하드웨어 클럭과 관련된 주파수에서 단조롭게 증가하는 CPU 카운터를 사용하여 측정합니다.카운터 해상도는 시스템의 하드웨어에 크게 의존하며, 이 값은 실제 시간과 신뢰할 수 있는 관계가 없으며 대부분의 경우 시스템 간 비교조차 불가능합니다.또한 CPU의 전원이 켜지거나 재설정될 때마다 카운터 값이 재설정됩니다.

time.perf_counter카운터의 절대 값을 반환합니다. time.process_timeCPU 카운터에서 파생되지만 지정된 프로세스가 CPU에서 실행되는 경우에만 업데이트되는 값으로, 프로세스 자체가 CPU에서 실행되는 시간인 '사용자 시간'과 프로세스를 대신하여 운영 체제 커널이 CPU에서 실행되는 시간인 '시스템 시간'으로 나눌 수 있습니다.

언급URL : https://stackoverflow.com/questions/25785243/understanding-time-perf-counter-and-time-process-time

반응형