File: jetstream2.py

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (131 lines) | stat: -rw-r--r-- 4,176 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Copyright 2019 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Runs Apple's JetStream 2 benchmark.

JetStream 2 combines together a variety of JavaScript and Web Assembly
benchmarks, covering a variety of advanced workloads and programming
techniques, and reports a single score that balances them using a geometric
mean.

Each benchmark measures a distinct workload, and no single optimization
technique is sufficient to speed up all benchmarks. Some benchmarks
demonstrate tradeoffs, and aggressive or specialized optimizations for one
benchmark might make another benchmark slower. JetStream 2 rewards browsers
that start up quickly, execute code quickly, and continue running smoothly.

Each benchmark in JetStream 2 computes its own individual score. JetStream 2
weighs each benchmark equally, taking the geometric mean over each individual
benchmark's score to compute the overall JetStream 2 score.

"""

from telemetry import benchmark

import page_sets
from benchmarks import press


class _JetStream2Base(press._PressBenchmark):  # pylint:disable=protected-access
  """JetStream2, a combination of JavaScript and Web Assembly benchmarks.

  Run all the JetStream 2.x benchmarks by default.
  """
  @classmethod
  def AddBenchmarkCommandLineArgs(cls, parser):
    parser.add_argument('--test-list',
                        help='Only run specific tests, separated by commas.')


@benchmark.Info(
    emails=['vahl@chromium.org', 'cbruni@chromium.org'],
    component='Blink>JavaScript',
    documentation_url='https://browserbench.org/JetStream2.0/in-depth.html')
class JetStream20(_JetStream2Base):
  """JetStream 2.0"""
  @classmethod
  def Name(cls):
    return 'UNSCHEDULED_jetstream20'

  def CreateStorySet(self, options):
    return page_sets.JetStream20StorySet(options.test_list)


@benchmark.Info(
    emails=['vahl@chromium.org', 'cbruni@chromium.org'],
    component='Blink>JavaScript',
    documentation_url='https://browserbench.org/JetStream2.1/in-depth.html')
class JetStream21(_JetStream2Base):
  """JetStream 2.1"""
  @classmethod
  def Name(cls):
    return 'UNSCHEDULED_jetstream21'

  def CreateStorySet(self, options):
    return page_sets.JetStream21StorySet(options.test_list)


@benchmark.Info(
    emails=['vahl@chromium.org', 'cbruni@chromium.org'],
    component='Blink>JavaScript',
    documentation_url='https://browserbench.org/JetStream2.2/in-depth.html')
class JetStream22(_JetStream2Base):
  """JetStream 2.2"""

  @classmethod
  def Name(cls):
    return 'UNSCHEDULED_jetstream22'

  def CreateStorySet(self, options):
    return page_sets.JetStream22StorySet(options.test_list)


@benchmark.Info(
    emails=['vahl@chromium.org', 'cbruni@chromium.org'],
    component='Blink>JavaScript',
    documentation_url='https://browserbench.org/JetStream2.0/in-depth.html')
class JetStream2(_JetStream2Base):
  """Latest JetStream 2.x """
  @classmethod
  def Name(cls):
    return 'jetstream2'

  def CreateStorySet(self, options):
    return page_sets.JetStream2StorySet(options.test_list)


@benchmark.Info(
    emails=['omerkatz@chromium.org'],
    component='Blink>JavaScript>GarbageCollection',
    documentation_url='https://browserbench.org/JetStream2.0/in-depth.html')
class JetStream2MinorMS(JetStream2):
  """Latest JetStream 2.x with the MinorMS flag.

  Shows the performance with MinorMS young generation GC in V8.
  """
  @classmethod
  def Name(cls):
    return 'jetstream2-minorms'

  def SetExtraBrowserOptions(self, options):
    options.AppendExtraBrowserArgs('--js-flags=--minor-ms')


@benchmark.Info(
    emails=['vahl@chromium.org', 'cbruni@chromium.org'],
    component='Blink>JavaScript',
    documentation_url='https://browserbench.org/JetStream2.0/in-depth.html')
class JetStream2NoFieldTrial(JetStream2):
  """Latest JetStream 2.x without field-trials
  """

  SCHEDULED = False

  @classmethod
  def Name(cls):
    return 'jetstream2-no-field-trials'

  def SetExtraBrowserOptions(self, options):
    options.AppendExtraBrowserArgs('--disable-field-trial-config')
    options.RemoveExtraBrowserArg('--enable-field-trial-config')