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')
|