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
|
# 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 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 """
@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 JetStream2 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')
|