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/
編集
Jatinder Mann, Microsoft Corp., <>
Zhiheng Wang, Google Inc. (Until July 2013)

公式の修正も含まれ得る,この文書の 正誤表 も参照願います。 Please refer to the errata for this document, which may include some normative corrections.

各国語 翻訳 See also translations.

Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.

要約

この仕様は、速度性能計量データの記録と取得を行うための,統一化されたインタフェースを定める。 この仕様は、個々の速度性能計量インタフェースについては対象にしない。 This specification defines an unified interface to store and retrieve performance metric data. This specification does not cover individual performance metric interfaces.

この文書の位置付け

この節では、発行時点における… 【 以下、この節の内容の一部は W3C 日本語訳 共通ページ に委譲 】

この文書は Web Performance Working Group により作成された W3C 勧告 "Performance Timeline Specification" です。 2013 年 8 月に作成された 実装報告書 も入手できます。 This is the W3C Recommendation of "Performance Timeline Specification", produced by the Web Performance Working Group. An implementation report produced in August 2013 is available.

前回の発行バージョンから変更された所はありません。 No changes were made since the previous publication.

勧告の発行にあたり、 W3C は,この仕様に指定される機能が,勧告に昇格するまでの間に Web IDL における変更からは影響されないものと予期しています。 By publishing this Recommendation, W3C expects that the functionality specified in this Performance Timeline Recommendation will not be affected by changes to Web IDL as this specification proceed to Recommendation.

コメントがあれば、件名の先頭に [PerformanceTimeline] と記した上で public-web-perf@w3.org (archived) 宛まで送られるよう願います。 Please send comments to public-web-perf@w3.org (archived) with [PerformanceTimeline] at the start of the subject line.

1. 序論

この節は参考である。 This section is non-normative.

ウェブアプリケーションの速度性能の特性を正確に測定することは、ウェブアプリケーションをより速いものにするための重要な側面になる。 [Navigation Timing], [Resource Timing], [User Timing] は、それぞれ順に, 文書のナビゲーション, ページ上のリソース, 開発者のスクリプト, に関わる計時情報を定める、仕様の例である。 Accurately measuring performance characteristics of web applications is an important aspect of making web applications faster. [Navigation Timing], [Resource Timing], and [User Timing] are examples of specifications that define timing information related to the navigation of the document, resources on the page, and developer scripts, respectively.

これらのインタフェースや将来的に作成され得る他のものは、ウェブアプリケーションの速度性能 timeline を表現する速度性能計量を定義する。 この仕様は、ウェブアプリケーションの速度性能 timeline から,これらの種々の速度性能計量に対するアクセスと取得を行うための、統一的なインタフェースを提供する。 Together these interfaces, and potentially others created in the future, define performance metrics that describe the performance timeline of a web application. This specification provides an unifying interface to access and retrieve these various performance metrics from the performance timeline of a web application.

【 timeline : 起きた出来事を時系列順に整列させるための “線”。 】

次のスクリプトは、開発者が 文書のナビゲーション, ページ上のリソース, 開発者によるスクリプト に関する計時データを取得するために PerformanceEntry インタフェースを利用する方法を示すものである。 The following script shows how a developer can use the PerformanceEntry interface to obtain timing data related to the navigation of the document, resources on the page and developer scripts.

<!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"); // [User Timing] を参照
            doWork(); // 開発者による何らかのコード
            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. 適合性の要件

【 この節の内容は W3C 日本語訳 共通ページ に委譲 】

3. 語法

【 この節の内容の一部は W3C 日本語訳 共通ページ に委譲 】

この仕様を通して、時刻は 文書のナビゲーションの開始を起点としてミリ秒単位で計測されるものとする。 例えば,文書のナビゲーションの開始は、時刻 0 で生じる。 語 “〜の時刻” は、文書のナビゲーションの開始から その時点までに経過した,ミリ秒数による時刻を指す。 この,時刻の定義は、 High Resolution Time 仕様 [High Resolution Time] に基づくものであり、 1970 年 1 月 1 日 0 時 0 分 0 秒 (UTC) を起点としていた, Navigation Timing 仕様 [Navigation Timing] による定義とは異なる。 Throughout this work, all time values are measured in milliseconds since the start of navigation of the document. For example, the start of navigation of the document occurs at time 0. The term current time refers to the number of milliseconds since the start of navigation of the document until the current moment in time. This definition of time is based on the High Resolution Time specification [High Resolution Time] and is different from the definition of time used in the Navigation Timing specification [Navigation Timing], where time is measured in milliseconds since midnight of January 1, 1970 (UTC).

4. Performance Timeline

4.1. Performance Timeline の適用範囲

PerformanceResourceTiming [Resource Timing], PerformanceMark, PerformanceMeasure [User Timing] インタフェースなどの, Performance Timeline に参与するすべてのインタフェースは、次の規則に従わなければならない All interfaces that participate in the Performance Timeline, such as the PerformanceResourceTiming [Resource Timing], PerformanceMark, and PerformanceMeasure [User Timing] interfaces, must adhere to the following rules:

  • PerformanceEntry インタフェースを拡張しなければならない Must extend the PerformanceEntry interface
  • getEntries, getEntriesByType, getEntriesByName メソッドによりサポートされなければならない Must be supported by the getEntries, getEntriesByType, and getEntriesByName methods

4.2. PerformanceEntry インタフェース

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

name 属性は、この PerformanceEntry オブジェクトに対する識別子を返さなければならない。 この識別子は一意的である必要はない。 The name attribute must return the identifier for this PerformanceEntry object. This identifier does not have to be unique.

entryType 属性

entryType 属性は、この PerformanceEntry オブジェクトで表現されるインタフェースの type を表す DOMString を返さなければならない The entryType attribute must return a DOMString that describes the type of the interface represented by this PerformanceEntry object.

注記: Web Performance/entryType wiki ページにて,既知の entryType 値のすべてが挙げられている。 The Web Performance/entryType wiki page lists all of the known entryType values.

startTime 属性

startTime 属性は、この速度性能計量において最初に記録されたタイムスタンプの time 値(時刻値)をとる, DOMHighResTimeStamp を返さなければならない The startTime attribute must return a DOMHighResTimeStamp that contains the time value of the first recorded timestamp of this performance metric.

duration 属性

duration 属性は、 この PerformanceEntry により記録された,事象全体の期間の time 値(時間の長さ値)をとる, DOMHighResTimeStamp を返さなければならない。 通常,これは、この PerformanceEntry において最後に記録されたタイムスタンプと, 最初に記録されたタイムスタンプとの時間差分になる。 速度性能計量は,時間長の概念が適用されない場合、 duration は 0 を返すことにしてもよい。 The duration attribute must return a DOMHighResTimeStamp that contains the time value of the duration of the entire event being recorded by this PerformanceEntry. Typically, this would be the time difference between the last recorded timestamp and the first recorded timestamp of this PerformanceEntry. A performance metric may choose to return a duration of 0, if the duration concept doesn't apply.

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] が利用する,速度性能の測定に関する属性とメソッドを保持するための区域を提供する。 The window.performance attribute provides a hosting area for performance measurement related attributes and methods using the Performance interface [Navigation Timing].

getEntries method

getEntries メソッドは、[ すべての PerformanceEntry オブジェクトの複製を, startTime から時系列順に並べたもの ]を内容とする, PerformanceEntryList オブジェクトを返す。 The getEntries method returns a PerformanceEntryList object that contains a copy of all PerformanceEntry objects in chronological order with respect to startTime.

引数無し
返り値

PerformanceEntryList オブジェクト。 A PerformanceEntryList object.

例外は投出されない
getEntriesByType method

getEntriesByType メソッドは、[ PerformanceEntryentryType 属性が entryType 引数と同じ値をとるような PerformanceEntry オブジェクトすべての複製を, startTime から時系列順に並べたもの ]を内容とする, PerformanceEntryList オブジェクトを返す。 The getEntriesByType method returns a PerformanceEntryList object that contains a copy of all PerformanceEntry objects, in chronological order with respect to startTime, that have the same value for the entryType attribute of PerformanceEntry as the entryType parameter.

引数
DOMString entryType

返り値の PerformanceEntryList オブジェクトは, entryType 属性がこの引数と同じ値をとる PerformanceEntry オブジェクトの複製のみからなる。 そのような PerformanceEntry オブジェクトが存在しない場合,返り値の内容は空でなければならない A PerformanceEntryList object that contains a copy of PerformanceEntry objects that have the same value for the entryType attribute of PerformanceEntry as the entryType parameter. If no such PerformanceEntry objects exist, the PerformanceEntryList must be empty.

返り値

PerformanceEntryList オブジェクト。 A PerformanceEntryList object.

例外は投出されない
getEntriesByName method

getEntriesByName メソッドは、[[ PerformanceEntryname 属性が name 引数と同じ値をとり, かつ entryType 引数が指定されている場合は PerformanceEntryentryType 属性も entryType 引数と同じ値をとる ]ような PerformanceEntry オブジェクトすべての複製を, startTime から時系列順に並べたもの ]を内容とする, PerformanceEntryList オブジェクトを返す。 The getEntriesByName method returns a PerformanceEntryList object that contains a copy of PerformanceEntry objects, in chronological order with respect to startTime, that have the same value for the name attribute of PerformanceEntry as the name parameter and, if specified, have the same value for the entryType attribute of PerformanceEntry as the entryType parameter.

引数
DOMString name

返り値は、 name 属性がこの引数と同じ値をとる PerformanceEntry オブジェクトの複製のみからなる。 そのような PerformanceEntry オブジェクトが存在しない場合,返り値の内容は空でなければならない The PerformanceEntryList object that contains a copy of PerformanceEntry objects that have the same value for the name attribute of PerformanceEntry as the name parameter. If no such PerformanceEntry objects exist, the PerformanceEntryList must be empty.

DOMString entryType

この引数も与えられた場合、返り値を構成する PerformanceEntry オブジェクト(の複製)は entryType 属性もこの引数と同じ値をとるものに限られる。 そのような PerformanceEntry オブジェクトが存在しない場合,返り値の内容は空でなければならない The PerformanceEntryList object that only contains a copy of PerformanceEntry objects that have the same value for the entryType attribute of PerformanceEntry as the entryType parameter and have the same value for the name attribute of PerformanceEntry as the name parameter. If no such PerformanceEntry objects exist, the PerformanceEntryList must be empty.

返り値

PerformanceEntryList オブジェクト。 A PerformanceEntryList object.

例外は投出されない

4.4 ベンダ拡張子

試験的な PerformanceEntryList オブジェクトを作成するために,ベンダ固有のプロプライエタリ UA 拡張が必要になった場合、 entryType IDL 属性の被取得時には、ベンダは,次の規約に従う DOMString を返さなければならない If a vendor-specific proprietary user agent extension is needed to create experimental PerformanceEntry objects, on getting the entryType IDL attribute, vendors MUST return a DOMString that uses the following convention:

[vendorprefix]-[entrytype]

ここで: Where,

  • [vendorprefix] は、ベンダを識別する大文字化されていない名前であり, [vendorprefix] is a non-capitalized name that identifies the vendor,
  • [entrytype] は、 この PerformanceEntry オブジェクトにより表現されるインタフェースの type に付与される,大文字化されていない名前であり, [entrytype] is a non-capitalized name given to the type of the interface represented by this PerformanceEntry object,
  • 上のいずれの名前も ASCII とする。 and the above names are in ASCII.

5. 参照文献

5.1. 参照文献(規範)

[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, 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/ http://www.w3.org/TR/resource-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.