TIME — 폼의 실행 시간을 측정하는 매크로
TIME — 폼의 실행 시간을 측정하는 매크로
어떤 폼을 평가하는 데 시간이 얼마나 걸리는지, 어떤 자원이 쓰였는지 보고 싶을 때 쓰는 매크로예요. 폼을 그대로 평가하면서 실행 시간 데이터를 trace output으로 출력해줘요.
출처: CLHS: Macro TIME
이 문서는 개발/성능 분석용 매크로입니다. TIME은 성능 튜닝 시점에 주로 유용해요.
시그니처
time form => results*
본문
인자와 값 (Arguments and Values)
form— 폼; 아래에서 설명하는 대로 평가돼요.results—form이 돌려준 값.
설명 (Description)
time은 현재 환경(어휘적·동적)에서 form을 평가해요. time 호출은 컴파일될 수 있어요.
time은 다양한 타이밍 데이터와 다른 정보를 trace output에 출력해요. 출력되는 정보의 성격과 형식은 **구현 정의적(implementation-defined)**이에요. 구현들은 경과 실시간, 머신 실행 시간, 스토리지 관리 통계 같은 정보를 제공하도록 권장돼요.
예제 (Examples)
없음.
영향 (Affected By)
결과의 정확성은 무엇보다 기반 운영체제가 제공하는 대응 함수들의 정확성에 달려 있어요.
결과의 크기는 하드웨어, 운영체제, lisp 구현, 전역 환경 상태에 따라 달라질 수 있어요. 결과에 자주 영향을 주는 구체적 요소로는 하드웨어 속도, 스케줄러 성격(있다면), 경쟁 프로세스 수(있다면), 시스템 페이징, 호출이 해석되는지 컴파일되는지, 호출되는 함수들이 컴파일됐는지, 어떤 종류의 가비지 컬렉터가 동작하는지, 내부 자료구조(예: 해시 테이블)가 암묵적으로 재구성되는지 등이 있어요.
특이 상황 (Exceptional Situations)
없음.
참고 (Notes)
일반적으로 이 타이밍들은 마케팅 비교에 쓰일 만큼 신뢰할 수 있다고 보장되지는 않아요. 그 가치는 주로 튜닝 목적의 휴리스틱(heuristic)이에요.
타이밍 결과 해석에 얽힌 복잡한 문제에 대한 유용한 배경 정보는 Performance and Evaluation of Lisp Programs를 참고하세요.
더 알아보기
get-internal-real-time— 내부 실시간 시계 값get-internal-run-time— 내부 실행 시간 값