Copyright
©
2011
2012
W3C
®
(
MIT
,
ERCIM
,
Keio
),
All
Rights
Reserved.
W3C
liability
,
trademark
and
document
use
rules
apply.
This
specification
defines
an
unified
interface
for
web
applications
to
access
timing
information
related
to
navigation
store
and
elements.
retrieve
performance
metric
data.
This
specification
does
not
cover
individual
performance
metric
interfaces.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This
is
a
the
second
Last
Call
Working
Draft
of
"Performance
Timeline".
This
new
version
takes
into
account
the
High
Resolution
Time
specification
and
moves
the
PerformanceTiming
interface
to
Navigation
Timing
2.
Please
send
comments
to
public-web-perf@w3.org
(
archived
)
with
[PerformanceTimeline]
at
the
start
of
the
subject
line
by
22
September
2011
.
.
A diff document with the previous draft is available.
This document is produced by the Web Performance Working Group. The Web Performance Working Group is part of the Rich Web Clients Activity in the W3C Interaction Domain .
You can find the latest Editor's Draft of this document in the W3C's Mercurial repository , which is updated on a regular basis.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy . W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy .
PerformanceEntry
interface
window.performance
attribute
This section is non-normative.
This
specification
introduces
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.
Together
these
interfaces,
and
potentially
others
created
in
the
future,
define
performance
metrics
that
describe
the
performance
timeline
of
a
unified
web
application.
The
Performance
Timeline
specification
provides
an
unifying
interface
to
store
access
and
retrieve
these
various
performance
metric
data.
This
specification
does
not
cover
individual
metrics
from
the
performance
metric
interfaces.
timeline
of
a
web
application.
The following script shows how a developer can use the Performance Timeline 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"); doWork(); // Some developer code performance.mark("endWork"); measurePerf(); } function measurePerf() { var perfEntries = performance.getEntries(); for (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>
All diagrams, examples, and notes in this specification are non-normative, as are all sections explicitly marked non-normative. Everything else in this specification is normative.
The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in the normative parts of this document are to be interpreted as described in RFC 2119 . For readability, these words do not appear in all uppercase letters in this specification.
Requirements phrased in the imperative as part of algorithms (such as "strip any leading space characters" or "return false and abort these steps") are to be interpreted with the meaning of the key word ("must", "should", "may", etc) used in introducing the algorithm.
Some conformance requirements are phrased as requirements on attributes, methods or objects. Such requirements are to be interpreted as requirements on user agents.
Conformance requirements phrased as algorithms or specific steps may be implemented in any manner, so long as the end result is equivalent. (In particular, the algorithms defined in this specification are intended to be easy to follow, and not intended to be performant.)
The IDL fragments in this specification must be interpreted as required for conforming IDL fragments, as described in the Web IDL specification. [Web IDL]
The
construction
"a
Foo
object",
where
Foo
is
actually
an
interface,
is
sometimes
used
instead
of
the
more
accurate
"an
object
implementing
the
interface
Foo
".
The
term
DOM
is
used
to
refer
to
the
API
set
made
available
to
scripts
in
Web
applications,
and
does
not
necessarily
imply
the
existence
of
an
actual
Document
object
or
of
any
other
Node
objects
as
defined
in
the
DOM
Core
specifications
.
A DOM attribute is said to be getting when its value is being retrieved (such as by author script), and is said to be setting when a new value is assigned to it.
The term "JavaScript" is used to refer to ECMA-262 , rather than the official term ECMAScript, since the term JavaScript is more widely known.
All interfaces that participate in the Performance Timeline , such as the PerformanceResourceTiming , PerformanceMark , and PerformanceMeasure interfaces, must adhere to the following rules:
getEntries
,
getEntriesByType
,
and
getEntriesByName
methods
PerformanceEntry
interface
interface PerformanceEntry { readonly attribute DOMString name; readonly attribute DOMString entryType; readonly attribute DOMHighResTimeStamp startTime; readonly attribute DOMHighResTimeStamp duration; };
name
attribute
The
name
attribute
must
return
the
identifier
for
this
PerformanceEntry
object.
This
identifier
does
not
have
to
be
unique.
startTime
entryType
attribute
The
attribute
must
return
a
DOMString
that
describes
the
startTime
entryType
first
recorded
timestamp
type
of
the
interface
represented
by
this
performance
metric.
PerformanceEntry
object.
entryType
startTime
attribute
The
attribute
must
return
a
entryType
startTime
const
unsigned
short
exposed
on
window.performance
DOMHighResTimeStamp
that
defines
contains
the
type
time
value
of
the
interface
represented
by
first
recorded
timestamp
of
this
PerformanceEntry
object.
performance
metric.
duration
attribute
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.
window.performance
attribute
partial interface Performance { PerformanceEntryList getEntries(); PerformanceEntryList getEntriesByType(DOMString entryType); PerformanceEntryList getEntriesByName(DOMString name, optional DOMString entryType); };typedef sequence <PerformanceEntry> ;typedef sequence <PerformanceEntry> PerformanceEntryList;
The window.performance attribute provides a hosting area for performance measurement related attributes and methods.
getEntries
method
The
getEntries
method
retrieves
returns
a
PerformanceEntryList
object
that
contains
a
copy
of
all
PerformanceEntry
objects
in
chronological
order
with
respect
to
startTime
.
getEntriesByType
method
The
getEntriesByType
method
retrieves
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.
Parameter
in
unsigned
short
DOMString
entryType
The
A
PerformanceEntryList
must
contain
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.
Return value
A PerformanceEntryList object.No exceptions
getEntriesByName
method
The
getEntriesByName
method
retrieves
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.
Parameter
in
DOMString
name
The
PerformanceEntryList
must
contain
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.
in
optional
unsigned
short
DOMString
entryType
The
PerformanceEntryList
must
object
that
only
contain
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.
Return value
A PerformanceEntryList object.No exceptions