이 문서는 Performance Timeline (W3C Recommendation 12 December 2013)의 한국어 번역본입니다.
이 문서에 오역 및 오타를 포함할 수 있습니다. 가능하면 원문도 확인하시길 바랍니다.

공개일
2015-11-02
번역자:
조은 <apes0123@gmail.com>
W3C

성능 타임라인 (Performance Timeline)

2013년 12월 12일 W3C 권고안

이 버전:
http://www.w3.org/TR/2013/REC-performance-timeline-20131212/
최신 버전:
http://www.w3.org/TR/performance-timeline/
이전 버전:
http://www.w3.org/TR/2013/PR-performance-timeline-20131031/
Editors:
Jatinder Mann, Microsoft Corp., <>
Zhiheng Wang, Google Inc. (Until July 2013)

이 문서의 표준 내용 변경을 포함하고 있을 수 있는 errata를 확인하시길 바랍니다.

번역본도 제공합니다.


요약

이 스펙문서는, 성능 측정 데이터 검색 및 기록을 하기 위한 통합 인터페이스를 정의합니다. 이 스펙문서는 개별 성능 측정 인터페이스에 대한 내용까지 다루지 않습니다.

이 문서의 상태

이 섹션은 이 문서를 공개했을 때 상태에 대해 설명합니다. 다른 문서가 이 문서를 덮어쓸 가능성이 있으니 주의하시길 바랍니다. 이 문서 및 W3C에서 공개한 다른 문서의 최신 버전은 W3C technical reports index at http://www.w3.org/TR/에서 확인 가능합니다.

이 문서는 Web Performance 워킹 그룹에서 제공하는 "성능 타임라인 스펙문서"의 W3C 권고안입니다. 2013년 8월 제공한 구현 보고서도 확인 가능합니다.

이 문서는 이전 버전 문서에서 변경내용이 없습니다.

이 문서를 권고안으로 발행함으로써, W3C는 성능 타임라인 권고안이 Web IDL 문서의 권고안 제정단계 진행으로 인한 영향을 받지 않을거라 기대하고 있습니다.

코멘트는 public-web-perf@w3.org (archived)로 보내주시길 바라며, 제목을 [PerformanceTimeline]으로 시작하시길 바랍니다.

이 문서는 W3C 멤버, 소프트웨어 개발자, 그리고 다른 W3C 그룹 및 관계자들이 평가를 진행하여, 디렉터에 의해 W3C 권고안으로 발표했습니다. 이 문서는 안정적이며, 참고자료로 사용하거나 다른 문서에서 인용해도 좋습니다. 스펙 문서의 권고를 통해 W3C가 하는 역할은 스펙 문서에 관심을 모으고 다방면으로 퍼뜨리는 일입니다. 이를 통해 웹의 기능과 상호운용성 향상을 기대할 수 있습니다.

이 문서는 2004년 2월 6일 W3C 특허 정책을 따르는 그룹에서 작성하였습니다. W3C는 그룹의 성과물에 관련하여 모든 공개 특허 공개 리스트를 관리합니다. 여기에는 특허 공개에 대한 지시사항도 포함합니다. 특허에 대해서 충분한 지식이 있는 사람이, 스펙 문서의 Essential Claim(s)에 인정된다고 파악되는 경우, W3C 특허 정책 제 6장에 의거하여 정보를 공개해야 할 필요가 있습니다.

목차

  1. 1소개
  2. 2적합 요구사항
  3. 3 용어
  4. 4 성능 타임라인
    1. 4.1 The Performance Timeline
    2. 4.2 PerformanceEntry 인터페이스
    3. 4.3 Performance 인터페이스 확장
    4. 4.4 벤더 확장
  5. 5 참고 문서
  6. 감사의 말

1 소개

이 섹션은 표준에 준하지 않습니다.

웹 어플리케이션의 성능 정보를 정확히 측정하는 건 웹 어플리케이션을 보다 빠르게 하고자 할 때 중요한 면이 됩니다. [Navigation Timing], [Resource Timing], [User Timing]은 이 스펙문서 내에서 문서의 네비게이션, 페이지상 리소스, 개발자 스크립트와 관련있는 타이밍 정보를 정의하는 예제입니다.

이런 인터페이스 및 미래에 추가될 다른 것들은, 웹 어플리케이션의 성능 타임라인을 실현하는 성능 측정을 정의합니다. 이 스펙문서는 웹 어플리케이션 성능 타임라인에서 다양한 성능 지표를 검색하고 접속하기 위한 통합 인터페이스를 제공합니다.

아래 스크립트는 개발자가 문서 네비게이션, 페이지상 리소스, 개발자 스크립트와 관련있는 타이밍 데이터를 얻기 위한 PerformanceEntry 인터페이스를 이용하는 방법을 나타냅니다.

<!doctype html>
<html>
  <head>
  </head>
  <body onload="init()">
    <img id="image0" src="http://w3c-test.org/webperf/image0.png" />
    <script>
       function init() 
       {
            performance.mark("startWork"); // see [User Timing]
            doWork(); // Some developer code
            performance.mark("endWork");
            
            measurePerf();
       }

       function measurePerf() 
       {
           var perfEntries = performance.getEntries();
           for (var i = 0; i < perfEntries.length; i++)
           {
                 if (window.console) console.log("Name: "        + perfEntries[i].name      + 
                                                 " Entry Type: " + perfEntries[i].entryType +
                                                 " Start Time: " + perfEntries[i].startTime + 
                                                 " Duration: "   + perfEntries[i].duration  + "\n");
           }
       }
    </script>
  </body>
</html>

2 적합 요구사항

이 스펙문서 안에서 모든 다이어그램, 예제, 노트 및 표준이 아니라 명시한 섹션은 모두 표준이 아닙니다. 그 외의 모든 내용은 표준입니다.

이 스펙 문서 내 키워드 "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL"는 RFC 2119에 기술되어있는대로 해석합니다. 가독성을 위해, 이 스펙문서에서 이 키워드들을 모두 대문자로 표기하지는 않습니다.

알고리즘 중 명령적 표현에 따른 요건(예를 들면: "선두 공백문자열 제거", "false를 반환하여 이 절차를 완료" 등) 은 알고리즘을 도입할 때 사용할 수 있는 키워드("must", "should", "may", etc)의 의미로 해석합니다.

일부 적합성 요구사항은 속성, 메소드, 오브젝트에 대한 요구사항으로 언급합니다. 이러한 요구 사항은 사용자 에이전트(UA)에 부과하는 요구사항으로 해석해야 합니다.

알고리즘 또는 특정 스텝으로 기록하는 적합성 요구사항은 최종 결과가 같은 값인 경우, 어떤 방식으로 구현해도 상관 없습니다. (특히, 이 스펙 문서에서 정의하는 알고리즘은 쫓기 쉽도록 기술되어 있어, 성능을 고려하지 않습니다)

이 스펙의 IDL 코드는 Web IDL 스펙에서 언급한 적합 IDL 코드에 부과한 요구 사항에 따르는 것으로 해석해야 합니다. [Web IDL]

3 용어

Foo를 인터페이스로 할 때, "Foo 인터페이스를 구현하는 객체"의 약자로 "Foo 객체"를 사용합니다.

이 작업을 통해, 모든 시간값은 문서 네비게이션 시작을 기점으로 밀리초 단위로 측정됩니다. 예를 들어, 문서 네비게이션 시작 시간은 0부터 시작합니다. 용어 현재 시간 (current time)은 문서 네비게이션 시작 시점부터 그 시점까지 경과한 시간을 밀리초로 나타냅니다. 이러한 시간 정의는 High Resolution Time 스펙 문서[High Resolution Time]에 기준을 두고 있으며, 1970년 1월 1일 0시 0분 0초 (UTC)를 기점으로 하는 Navigation Timing 스펙 문서[Navigation Timing]와 다릅니다.

4 성능 타임라인

4.1 The Performance Timeline

PerformanceResourceTiming [Resource Timing], PerformanceMark, 및 PerformanceMeasure [User Timing] 인터페이스 같은 Performance Timeline에 포함되어있는 모든 인터페이스는 반드시 아래 룰을 따라야 합니다. [must]

4.2 PerformanceEntry 인터페이스

interface PerformanceEntry {
  readonly attribute DOMString name;
  readonly attribute DOMString entryType;
  readonly attribute DOMHighResTimeStamp startTime;
  readonly attribute DOMHighResTimeStamp duration;
};

name 속성

name 속성은 반드시PerformanceEntry 객체의 식별자를 리턴해야 합니다. 이 식별자는 유니크하지 않아도 괜찮습니다.

entryType 속성

entryType 속성은 반드시PerformanceEntry 객체에 의해 나타나는 인터페이스의 타입을 설명하는 DOMString을 리턴해야 합니다.

노트

Web Performance/entryType 위키 페이지에서 현재까지 알려진 entryType 값 전체 목록을 확인할 수 있습니다.

startTime 속성

startTime 속성은 반드시 이 퍼포먼스 측정값에서 최초로 기록된 타임스탬프의 time 값을 포함하고 있는, DOMHighResTimeStamp을 리턴해야 합니다.

duration 속성

duration 속성은 반드시PerformanceEntry에 의해 기록된 전체 이벤트 기간동안의 time 값을 포함한 DOMHighResTimeStamp를 반환해야합니다. 물리적으로 이 값은 PerformanceEntry에 기록된 최초 타임스탬프와 마지막 타임스탬프 사이의 시간 차입니다. 성능 값은 사이값을 계산하는 스펙이 반영되지 않았다면 duration 값을 0으로 반환해도 좋습니다.

4.3 Performance 인터페이스 확장

partial interface Performance {
  PerformanceEntryList getEntries();
  PerformanceEntryList getEntriesByType(DOMString entryType);
  PerformanceEntryList getEntriesByName(DOMString name, optional DOMString entryType);
};

typedef sequence <PerformanceEntry> PerformanceEntryList;

window.performance 속성은 Performance인터페이스 [Navigation Timing]를 사용하는 퍼포먼스 측정에 관련한 속성과 메서드를 유지할 수 있는 공간을 제공합니다.

getEntries method

getEntries 메서드는 startTime에서 시간순으로 나열한 PerformanceEntry 객체의 모든 복사본을 포함하는 PerformanceEntryList 객체를 반환합니다.

인수 없음

리턴 값

PerformanceEntryList 객체

예외 없음

getEntriesByType method

getEntriesByType 메서드는 startTime에서 시간순으로 나열한 PerformanceEntry 객체중 PerformanceEntry의 속성 entryType이 인수 entryType와 같은 PerformanceEntry 객체의 모든 복사본을 포함하는 PerformanceEntryList 객체를 반환합니다.

인수

DOMString entryType

PerformanceEntryList 객체는 PerformanceEntry 객체의 속성 entryType 값이 인수 entryType 값과 동일한 값을 가진 PerformanceEntry 복사본을 포함하고 있어야 합니다. 만약 같은 속성값을 가진 PerformanceEntry 객체가 존재하지 않는다면 PerformanceEntryList반드시 비어있어야 합니다.

리턴 값

PerformanceEntryList 객체.

예외 없음

getEntriesByName method

getEntriesByName 메서드는 startTime 순서대로 정렬되어 있으며 PerformanceEntry 객체의 속성 name값이 인수 name값과 같은 PerformanceEntry 객체이거나, 만약 정의되어있다면, PerformanceEntryListentryType 속성 값이 인수 entryType과 동일한 PerformanceEntryList 객체의 복사본을 포함한 PerformanceEntryList 객체를 반환합니다.

인수

DOMString name

PerformanceEntry 객체의 name 값이 인수 name 값과 동일한 PerformanceEntry 객체의 복사본을 포함한 PerformanceEntryList 객체. 만약 같은 속성값을 가진 PerformanceEntry 객체가 존재하지 않는다면, PerformanceEntryList 객체는 반드시 비어있어야 합니다.

DOMString entryType

PerformanceEntry 객체의 entryType 값이 인수 entryType 값과 동일하거나 PerformanceEntry 객체의 name 값이 인수 namePerformanceEntry 객체의 복사본을 포함한 PerformanceEntryList 객체. 만약 같은 속성값을 가진 PerformanceEntry 객체가 존재하지 않는다면, PerformanceEntryList 객체는 반드시 비어있어야 합니다.

리턴 값

PerformanceEntryList 객체.

예외 없음

4.4 벤더 확장

만약 실험적인 PerformanceEntry 객체를 생성하는데 벤더 독자의 유저 에이전트 확장이 필요한 경우, entryType 속성을 얻고자 할 때, 벤더는 반드시 아래와 같은 컨벤션을 따라 DOMString을 반환해야 합니다.

[vendorprefix]-[entrytype]

여기서,

5 참고문서

5.1 표준 참고문서

[IETF RFC 2119]
Key words for use in RFCs to Indicate Requirement Levels, Scott Bradner, Author. Internet Engineering Task Force, March 1997. Available at http://www.ietf.org/rfc/rfc2119.txt.
[Navigation Timing]
Navigation Timing, Zhiheng Wang, Editor. W3C Recommendation, World Wide Web Consortium, December 2012. This version of the Navigation Timing specification is available from http://www.w3.org/TR/2012/REC-navigation-timing-20121217/. The latest version of Navigation Timing is available at http://www.w3.org/TR/navigation-timing/.
[High Resolution Time]
High Resolution Time, Jatinder Mann, Editor. W3C Recommendation, World Wide Web Consortium, December 2012. This version of the High Resolution Time specification is available from http://www.w3.org/TR/2012/REC-hr-time-20121217/. The latest version of High Resolution Time is available at http://www.w3.org/TR/hr-time/.
[Web IDL]
Web IDL, Cameron McCormack, Editor. World Wide Web Consortium, April 2012. This version of the Web IDL specification is available from http://www.w3.org/TR/2012/CR-WebIDL-20120419/. The latest version of Web IDL is available at http://www.w3.org/TR/WebIDL/.

5.1 정보 참고문서

[User Timing]
User Timing, Jatinder Mann, et al. Editors. W3C Recommendation, World Wide Web Consortium, December 2013. This version of the User Timing Recommendation is available from http://www.w3.org/TR/2013/REC-user-timing-20131212/. The latest version of User Timing is available at http://www.w3.org/TR/user-timing/.
[Resource Timing]
Resource Timing, J. Mann, Z. Wang, et al. Editors. World Wide Web Consortium, May 2012. This version of the Resource Timing specification is available from http://www.w3.org/TR/2012/CR-resource-timing-20120522/. The latest version of Resource Timing is available at http://www.w3.org/TR/user-timing/.

감사의 말

We would like to offer our sincere thanks to all the people that we have been in touch with regarding this draft for their reviews and feedback.