From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- testing/talos/perfdocs/config.yml | 1285 +++++++++++++++++++++++++++++++++++++ testing/talos/perfdocs/index.rst | 728 +++++++++++++++++++++ 2 files changed, 2013 insertions(+) create mode 100644 testing/talos/perfdocs/config.yml create mode 100644 testing/talos/perfdocs/index.rst (limited to 'testing/talos/perfdocs') diff --git a/testing/talos/perfdocs/config.yml b/testing/talos/perfdocs/config.yml new file mode 100644 index 0000000000..bbc71a74aa --- /dev/null +++ b/testing/talos/perfdocs/config.yml @@ -0,0 +1,1285 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +--- +name: talos +manifest: None +static-only: False +suites: + Talos Tests: + description: "For the sample commands found below, note that the capitalization used is important. Without the exact spelling, the test won't be found when running locally." + tests: + ARES6: > + - contact: :jandem and SpiderMonkey Team + - source: `ARES-6 `__ + - type: `Page load`_ + - data: 6 cycles of the entire benchmark + * `geometric mean `__ self reported from the benchmark + - **Lower is better** + - unit: geometric mean / benchmark score + JetStream: > + - contact: :jandem and SpiderMonkey Team + - source: `jetstream.manifest `__ and jetstream.zip from tooltool + - type: `Page load`_ + - measuring: JavaScript performance + - reporting: geometric mean from the benchmark + - data: internal benchmark + * suite: `geometric + mean `__ + provided by the benchmark + - description: + | This is the `JetStream `__ + javascript benchmark taken verbatim and slightly modified to fit into + our pageloader extension and talos harness. + a11yr: > + - contact: :jamie and accessibility team + - source: `a11y.manifest `__ + - type: `Page load`_ + - measuring: ??? + - data: we load 2 pages 25 times each, collect 2 sets of 25 data points + - summarization: + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 24; `source: + test.py `__ + * suite: `geometric mean`_ of the 2 subtest results. + - reporting: test time in ms (lower is better) + - description: + | This test ensures basic a11y tables and permutations do not cause performance regressions. + - **Example Data** + * 0;dhtml.html;1584;1637;1643;1665;1741;1529;1647;1645;1692;1647;1542;1750;1654;1649;1541;1656;1674;1645;1645;1740;1558;1652;1654;1656;1654 | + * 1;tablemutation.html;398;385;389;391;387;387;385;387;388;385;384;31746;386;387;384;387;389;387;387;387;388;391;386;387;388 | + about_preferences_basic: > + - contact: :jaws and :gijs + - source: `about_preferences_basic.manifest `__ + - type: `Page load`_ + - measuring: first-non-blank-paint + - data: We load 5 urls 1 time each, and repeat for 25 cycles; collecting 25 sets of 5 data points + - summarization: + * subtest: `ignore first`_ five data points, then take the `median`_ of the rest; `source: test.py `__ + * suite: `geometric mean`_ of the the subtest results. + - reporting: test time in ms (lower is better) + - description: + | This test measures the performance of the Firefox about:preferences + page. This test is a little different than other pageload tests in that + we are loading one page (about:preferences) but also testing the loading + of that same page's subcategories/panels (i.e. about:preferences#home). + + When simply changing the page's panel/category, that doesn't cause a new + onload event as expected; therefore we had to introduce loading the + 'about:blank' page in between each page category; that forces the entire + page to reload with the specified category panel activated. + + For that reason, when new panels/categories are added to the + 'about:preferences' page, it can be expected that a performance + regression may be introduced, even if a subtest hasn't been added for + that new page category yet. + + This test should only ever have 1 pagecycle consisting of the main + about-preferences page and each category separated by an about:blank + between. Then repeats are achieved by using 25 cycles (instead of + pagecycles). + - **Example Data** + * 0;preferences;346;141;143;150;136;143;153;140;154;156;143;154;146;147;151;166;140;146;140;144;144;156;154;150;140 + * 2;preferences#search;164;142;133;141;141;141;142;140;131;146;131;140;131;131;139;142;140;144;146;143;143;142;142;137;143 + * 3;preferences#privacy;179;159;166;177;173;153;148;154;168;155;164;155;152;157;149;155;156;186;149;156;160;151;158;168;157 + * 4;preferences#sync;148;156;140;137;159;139;143;145;138;130;145;142;141;133;146;141;147;143;146;146;139;144;142;151;156 + * 5;preferences#home;141;111;130;131;138;128;133;122;138;138;131;139;139;132;133;141;143;139;138;135;136;128;134;140;135 + basic_compositor_video: > + - contact: :b0bh00d, :jeffm, and gfx + - source: `video `__ + - type: `Page load`_ + - data: 12 cycles of the entire benchmark, each subtest will have 12 data points (see below) + - summarization: + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 11; `source: test.py `__ + * suite: `geometric mean`_ of the 24 subtest results. + - **Lower is better** + - **Example Data** + * ;0;240p.120fps.mp4_scale_fullscreen_startup;11.112;11.071;11.196;11.157;11.195;11.240;11.196;11.155;11.237;11.074;11.154;11.282 + * ;1;240p.120fps.mp4_scale_fullscreen_inclip;10.995;11.114;11.052;10.991;10.876;11.115;10.995;10.991;10.997;10.994;10.992;10.993 + * ;2;240p.120fps.mp4_scale_1_startup;1.686;1.690;1.694;1.683;1.689;1.692;1.686;1.692;1.689;1.704;1.684;1.686 + * ;3;240p.120fps.mp4_scale_1_inclip;1.666;1.666;1.666;1.668;1.667;1.669;1.667;1.668;1.668;1.667;1.667;1.669 + * ;4;240p.120fps.mp4_scale_1.1_startup;1.677;1.672;1.673;1.677;1.673;1.677;1.672;1.677;1.677;1.671;1.676;1.679 + * ;5;240p.120fps.mp4_scale_1.1_inclip;1.667;1.668;1.666;1.667;1.667;1.668;1.667;1.667;1.667;1.667;1.668;1.668 + * ;6;240p.120fps.mp4_scale_2_startup;1.927;1.908;1.947;1.946;1.902;1.932;1.916;1.936;1.921;1.896;1.908;1.894 + * ;7;240p.120fps.mp4_scale_2_inclip;1.911;1.901;1.896;1.917;1.897;1.921;1.907;1.944;1.904;1.912;1.936;1.913 + * ;8;480p.60fps.webm_scale_fullscreen_startup;11.675;11.587;11.539;11.454;11.723;11.410;11.629;11.410;11.454;11.498;11.540;11.540 + * ;9;480p.60fps.webm_scale_fullscreen_inclip;11.304;11.238;11.370;11.300;11.364;11.368;11.237;11.238;11.434;11.238;11.304;11.368 + * ;10;480p.60fps.webm_scale_1_startup;3.386;3.360;3.391;3.376;3.387;3.402;3.371;3.371;3.356;3.383;3.376;3.356 + * ;11;480p.60fps.webm_scale_1_inclip;3.334;3.334;3.329;3.334;3.334;3.334;3.334;3.334;3.334;3.335;3.334;3.334 + * ;12;480p.60fps.webm_scale_1.1_startup;3.363;3.363;3.368;3.356;3.356;3.379;3.364;3.360;3.360;3.356;3.363;3.356 + * ;13;480p.60fps.webm_scale_1.1_inclip;3.329;3.334;3.329;3.334;3.333;3.334;3.334;3.334;3.340;3.335;3.329;3.335 + * ;14;480p.60fps.webm_scale_2_startup;4.960;4.880;4.847;4.959;4.802;4.863;4.824;4.926;4.847;4.785;4.870;4.855 + * ;15;480p.60fps.webm_scale_2_inclip;4.903;4.786;4.892;4.903;4.822;4.832;4.798;4.857;4.808;4.856;4.926;4.741 + * ;16;1080p.60fps.mp4_scale_fullscreen_startup;14.638;14.495;14.496;14.710;14.781;14.853;14.639;14.637;14.707;14.637;14.711;14.636 + * ;17;1080p.60fps.mp4_scale_fullscreen_inclip;13.795;13.798;13.893;13.702;13.799;13.607;13.798;13.705;13.896;13.896;13.896;14.088 + * ;18;1080p.60fps.mp4_scale_1_startup;6.995;6.851;6.930;6.820;6.915;6.805;6.898;6.866;6.852;6.850;6.803;6.851 + * ;19;1080p.60fps.mp4_scale_1_inclip;6.560;6.625;6.713;6.601;6.645;6.496;6.624;6.538;6.539;6.497;6.580;6.558 + * ;20;1080p.60fps.mp4_scale_1.1_startup;7.354;7.230;7.195;7.300;7.266;7.283;7.196;7.249;7.230;7.230;7.212;7.264 + * ;21;1080p.60fps.mp4_scale_1.1_inclip;6.969;7.222;7.018;6.993;7.045;6.970;6.970;6.807;7.118;6.969;6.997;6.972 + * ;22;1080p.60fps.mp4_scale_2_startup;6.963;6.947;6.914;6.929;6.979;7.010;7.010245327102808;6.914;6.961;7.028;7.012;6.914 + * ;23;1080p.60fps.mp4_scale_2_inclip;6.757;6.694;6.672;6.669;6.737;6.831;6.716;6.715;6.832;6.670;6.672;6.759 + canvas2dvideo: > + - contact: :aosmond and gfx + - source: `canvas2dvideo `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: Canvas2D video texture update with 1080p video. Measures mean tick time across 100 ticks. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean tick time across 100 ticks: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test playbacks a video file and ask Canvas2D to draw video frames as + Canvas2D textures for 100 ticks. It collects the mean tick time across 100 + ticks to measure how much time it will spend for a video texture upload + to be a Canvas2D texture (ctx.drawImage). We run it for 5 times and ignore + the first found. Lower results are better. + offscreencanvas_webcodecs_main_webgl_h264: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_main_webgl_h264 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas WebGL video texture update with WebCodecs and 1080p H264 video on the main thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a H264 video file using WebCodecs and ask WebGL to draw video + frames as WebGL textures for 100 frames on the main thread. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + WebGL texture (gl.texImage2D). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_main_webgl_vp9: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_main_webgl_vp9 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas WebGL video texture update with WebCodecs and 1080p VP9 video on the main thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a VP9 video file using WebCodecs and ask WebGL to draw video + frames as WebGL textures for 100 frames on the main thread. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + WebGL texture (gl.texImage2D). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_main_webgl_av1: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_main_webgl_av1 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas WebGL video texture update with WebCodecs and 1080p AV1 video on the main thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a AV1 video file using WebCodecs and ask WebGL to draw video + frames as WebGL textures for 100 frames on the main thread. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + WebGL texture (gl.texImage2D). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_worker_webgl_h264: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_worker_webgl_h264 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas WebGL video texture update with WebCodecs and 1080p H264 video on a DOM worker thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a H264 video file using WebCodecs and ask WebGL to draw video + frames as WebGL textures for 100 frames on a DOM worker. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + WebGL texture (gl.texImage2D). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_worker_webgl_vp9: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_worker_webgl_vp9 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas WebGL video texture update with WebCodecs and 1080p VP9 video on a DOM worker thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a VP9 video file using WebCodecs and ask WebGL to draw video + frames as WebGL textures for 100 frames on a DOM worker. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + WebGL texture (gl.texImage2D). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_worker_webgl_av1: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_worker_webgl_av1 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas WebGL video texture update with WebCodecs and 1080p AV1 video on a DOM worker thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a AV1 video file using WebCodecs and ask WebGL to draw video + frames as WebGL textures for 100 frames on a DOM worker. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + WebGL texture (gl.texImage2D). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_main_2d_h264: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_main_2d_h264 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas 2D video texture update with WebCodecs and 1080p H264 video on the main thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a H264 video file using WebCodecs and ask Canvas2D to draw video + frames as Canvas2D textures for 100 frames on the main thread. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + Canvas2D texture (ctx.drawImage). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_main_2d_vp9: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_main_2d_vp9 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas 2D video texture update with WebCodecs and 1080p VP9 video on the main thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a VP9 video file using WebCodecs and ask Canvas2D to draw video + frames as Canvas2D textures for 100 frames on the main thread. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + Canvas2D texture (ctx.drawImage). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_main_2d_av1: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_main_2d_av1 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas 2D video texture update with WebCodecs and 1080p AV1 video on the main thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a AV1 video file using WebCodecs and ask Canvas2D to draw video + frames as Canvas2D textures for 100 frames on the main thread. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + Canvas2D texture (ctx.drawImage). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_worker_2d_h264: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_worker_2d_h264 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas 2D video texture update with WebCodecs and 1080p H264 video on a DOM worker thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a H264 video file using WebCodecs and ask Canvas2D to draw video + frames as Canvas2D textures for 100 frames on a DOM worker thread. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + Canvas2D texture (ctx.drawImage). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_worker_2d_vp9: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_worker_2d_vp9 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas 2D video texture update with WebCodecs and 1080p VP9 video on a DOM worker thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a VP9 video file using WebCodecs and ask Canvas2D to draw video + frames as Canvas2D textures for 100 frames on a DOM worker thread. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + Canvas2D texture (ctx.drawImage). We run it for 5 times and ignore the first found. Lower + results are better. + offscreencanvas_webcodecs_worker_2d_av1: > + - contact: :aosmond and gfx + - source: `offscreencanvas_webcodecs_worker_2d_av1 `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: OffscreenCanvas 2D video texture update with WebCodecs and 1080p AV1 video on a DOM worker thread. Measures mean frame time across 100 frames. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean frame time across 100 frames: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test extracts frames from a AV1 video file using WebCodecs and ask Canvas2D to draw video + frames as Canvas2D textures for 100 frames on a DOM worker thread. It collects the mean frame time + across 100 frames to measure how much time it will spend for a video texture upload to be a + Canvas2D texture (ctx.drawImage). We run it for 5 times and ignore the first found. Lower + results are better. + cpstartup: > + - contact: :mconley, Firefox Desktop Front-end team, Gijs, fqueze, and dthayer + - measuring: Time from opening a new tab (which creates a new content process) to having that new content process be ready to load URLs. + - source: `cpstartup `__ + - type: `Page load`_ + - bug: `bug 1336389 `__ + - data: 20 cycles of the entire benchmark + - **Lower is better** + - **Example Data** + * 0;content-process-startup;877;737;687;688;802;697;794;685;694;688;794;669;699;684;690;849;687;873;694;689 + cross_origin_pageload: > + - contact: :sefeng, :jesup, and perf eng team + - measuring: The time it takes to load a page which has 20 cross origin iframes + - source: `cross_origin_pageload `__ + - type: `Page load`_ + - bug: `bug 1701989 `__ + - data: 10 cycles of the entire benchmark + - **Lower is better** + - **Example Data** + * 0;/index.html;194.42;154.12;141.38;145.88;136.92;147.64;152.54;138.02;145.5;143.62 + damp: > + - contact: :ochameau and devtools team + - source: `damp `__ + - type: `Page load`_ + - measuring: Developer Tools toolbox performance. Split in test suites covering different DevTools areas (inspector, webconsole, other). + - reporting: intervals in ms (lower is better) - see below for details + - data: there are 36 reported subtests from DAMP which we load 25 times, resulting in 36 sets of 25 data points. + - summarization: + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 24 data points; `source: test.py `__ + * suite: No value for the suite, only individual subtests are relevant. + - description: + | To run this locally, you'll need to pull down the `tp5 page + set <#page-sets>`__ and run it in a local web server. See the `tp5 + section <#tp5>`__. + - **Example Data** + * 0;simple.webconsole.open.DAMP;1198.86;354.38;314.44;337.32;344.73;339.05;345.55;358.37;314.89;353.73;324.02;339.45;304.63;335.50;316.69;341.05;353.45;353.73;342.28;344.63;357.62;375.18;326.08;363.10;357.30 + * 1;simple.webconsole.reload.DAMP;44.60;41.21;25.62;29.85;38.10;42.29;38.25;40.14;26.95;39.24;40.32;34.67;34.64;44.88;32.51;42.09;28.04;43.05;40.62;36.56;42.44;44.11;38.69;29.10;42.00 + * 2;simple.webconsole.close.DAMP;27.26;26.97;25.45;27.82;25.98;26.05;38.00;26.89;24.90;26.61;24.90;27.22;26.95;25.18;24.24;25.60;28.91;26.90;25.57;26.04;26.79;27.33;25.76;26.47;27.43 + * 3;simple.inspector.open.DAMP;507.80;442.03;424.93;444.62;412.94;451.18;441.39;435.83;441.27;460.69;440.93;413.13;418.73;443.41;413.93;447.34;434.69;459.24;453.60;412.58;445.41;466.34;441.89;417.59;428.82 + * 4;simple.inspector.reload.DAMP;169.45;165.11;163.93;181.12;167.86;164.67;170.34;173.12;165.24;180.59;176.72;187.42;170.14;190.35;176.59;155.00;151.66;174.40;169.46;163.85;190.93;217.00;186.25;181.31;161.13 + * 5;simple.inspector.close.DAMP;44.40;42.28;42.71;47.21;41.74;41.24;42.94;43.73;48.24;43.04;48.61;42.49;45.93;41.36;43.83;42.43;41.81;43.93;41.38;40.98;49.76;50.86;43.49;48.99;44.02 + * 6;simple.jsdebugger.open.DAMP;642.59;464.02;540.62;445.46;471.09;466.57;466.70;511.91;424.12;480.70;448.37;477.51;488.99;437.97;442.32;459.03;421.54;467.99;472.78;440.27;431.47;454.76;436.86;453.61;485.59 + * 7;simple.jsdebugger.reload.DAMP;51.65;55.46;225.46;53.32;58.78;53.23;54.39;51.59;55.46;48.03;50.70;46.34;230.94;53.71;54.23;53.01;61.03;51.23;51.45;293.01;56.93;51.44;59.85;63.35;57.44 + * 8;simple.jsdebugger.close.DAMP;29.12;30.76;40.34;32.09;31.26;32.30;33.95;31.89;29.68;31.39;32.09;30.36;44.63;32.33;30.16;32.43;30.89;30.85;31.99;49.86;30.94;44.63;32.54;29.79;33.15 + * 9;simple.styleeditor.open.DAMP;758.54;896.93;821.17;1026.24;887.14;867.39;927.86;962.80;740.40;919.39;741.01;925.21;807.39;1051.47;729.04;1095.78;755.03;888.70;900.52;810.30;1090.09;869.72;737.44;893.16;927.72 + * 10;simple.styleeditor.reload.DAMP;57.32;178.13;59.23;60.82;71.45;78.86;74.35;60.11;66.43;77.41;61.96;69.22;65.97;45.53;67.88;74.76;124.61;60.01;36.66;59.24;65.01;165.68;34.61;69.02;71.42 + * 11;simple.styleeditor.close.DAMP;28.28;56.50;36.18;30.00;36.32;34.85;35.33;36.24;25.45;36.72;26.53;36.90;28.88;30.94;26.56;31.34;47.79;30.90;30.52;27.95;30.75;56.28;26.76;30.25;37.42 + * 12;simple.performance.open.DAMP;444.28;357.87;331.17;335.16;585.71;402.99;504.58;466.95;272.98;427.54;345.60;441.53;319.99;327.91;312.94;349.79;399.51;465.60;418.42;295.14;362.06;363.11;445.71;634.96;500.83 + * 13;simple.performance.reload.DAMP;38.07;33.44;35.99;70.57;64.04;106.47;148.31;29.60;68.47;28.95;148.46;75.92;32.15;93.72;36.17;44.13;75.11;154.76;98.28;75.16;29.39;36.68;113.16;64.05;135.60 + * 14;simple.performance.close.DAMP;23.98;25.49;24.19;24.61;27.56;40.33;33.85;25.13;22.62;25.28;41.84;25.09;26.39;25.20;23.76;25.44;25.92;30.40;40.77;25.41;24.57;26.15;43.65;28.54;30.16 + * 15;simple.netmonitor.open.DAMP;438.85;350.64;318.04;329.12;341.91;352.33;344.05;334.15;514.57;327.95;471.50;334.55;344.94;364.39;727.56;374.48;339.45;344.31;345.61;329.78;325.74;334.74;350.36;342.85;344.64 + * 16;simple.netmonitor.reload.DAMP;59.68;47.50;69.37;61.18;76.89;83.22;68.11;81.24;56.15;68.20;32.41;81.22;81.62;44.30;39.52;29.60;86.07;71.18;76.32;79.93;79.63;82.15;83.58;87.04;82.97 + * 17;simple.netmonitor.close.DAMP;38.42;39.32;52.56;43.37;48.08;40.62;51.12;41.11;59.54;43.29;41.72;40.85;51.61;49.61;51.39;44.91;40.36;41.10;45.43;42.15;42.63;40.69;41.21;44.04;41.95 + * 18;complicated.webconsole.open.DAMP;589.97;505.93;480.71;530.93;460.60;479.63;485.33;489.08;605.28;457.12;463.95;493.28;680.05;478.72;504.47;578.69;488.66;485.34;504.94;460.67;548.38;474.98;470.33;471.34;464.58 + * 19;complicated.webconsole.reload.DAMP;2707.20;2700.17;2596.02;2728.09;2905.51;2716.65;2657.68;2707.74;2567.86;2726.36;2650.92;2839.14;2620.34;2718.36;2595.22;2686.28;2703.48;2609.75;2686.41;2577.93;2634.47;2745.56;2655.89;2540.09;2649.18 + * 20;complicated.webconsole.close.DAMP;623.56;570.80;636.63;502.49;565.83;537.93;525.46;565.78;532.90;562.66;525.42;490.88;611.99;486.45;528.60;505.35;480.55;500.75;532.75;480.91;488.69;548.77;535.31;477.92;519.84 + * 21;complicated.inspector.open.DAMP;1233.26;753.57;742.74;953.11;653.29;692.66;653.75;767.02;840.68;707.56;713.95;685.79;690.21;1020.47;685.67;721.69;1063.72;695.55;702.15;760.91;853.14;660.12;729.16;1044.86;724.34 + * 22;complicated.inspector.reload.DAMP;2384.90;2436.35;2356.11;2436.58;2372.96;2558.86;2543.76;2351.03;2411.95;2358.04;2413.27;2339.85;2373.11;2338.94;2418.88;2360.87;2349.09;2498.96;2577.73;2445.07;2354.88;2424.90;2696.10;2362.39;2493.29 + * 23;complicated.inspector.close.DAMP;541.96;509.38;476.91;456.48;545.48;634.04;603.10;488.09;599.20;480.45;617.93;420.39;514.92;439.99;727.41;469.04;458.59;539.74;611.55;725.03;473.36;484.60;481.46;458.93;554.76 + * 24;complicated.jsdebugger.open.DAMP;644.97;578.41;542.23;595.94;704.80;603.08;689.18;552.99;597.23;584.17;682.14;758.16;791.71;738.43;640.30;809.26;704.85;601.32;696.10;683.44;796.34;657.25;631.89;739.96;641.82 + * 25;complicated.jsdebugger.reload.DAMP;2676.82;2650.84;2687.78;2401.23;3421.32;2450.91;2464.13;2286.40;2399.40;2415.97;2481.48;2827.69;2652.03;2554.63;2631.36;2443.83;2564.73;2466.22;2597.57;2552.73;2539.42;2481.21;2319.50;2539.00;2576.43 + * 26;complicated.jsdebugger.close.DAMP;795.68;616.48;598.88;536.77;435.02;635.61;558.67;841.64;613.48;886.60;581.38;580.96;571.40;605.34;671.00;882.02;619.01;579.63;643.05;656.78;699.64;928.99;549.76;560.96;676.32 + * 27;complicated.styleeditor.open.DAMP;2327.30;2494.19;2190.29;2205.60;2198.11;2509.01;2189.79;2532.05;2178.03;2207.75;2224.96;2665.84;2294.40;2645.44;2661.41;2364.60;2395.36;2582.72;2872.03;2679.29;2561.24;2330.11;2580.16;2510.36;2860.83 + * 28;complicated.styleeditor.reload.DAMP;2218.46;2335.18;2284.20;2345.05;2286.98;2453.47;2506.97;2661.19;2529.51;2289.78;2564.15;2608.24;2270.77;2362.17;2287.31;2300.19;2331.56;2300.86;2239.27;2231.33;2476.14;2286.28;2583.24;2540.29;2259.67 + * 29;complicated.styleeditor.close.DAMP;302.67;343.10;313.15;305.60;317.92;328.44;350.70;370.12;339.77;308.72;312.71;320.63;305.52;316.69;324.92;306.60;313.65;312.17;326.26;321.45;334.56;307.38;312.95;350.94;339.36 + * 30;complicated.performance.open.DAMP;477.99;537.96;564.85;515.05;502.03;515.58;492.80;689.06;448.76;588.91;509.76;485.39;548.17;479.14;638.67;535.86;541.61;611.52;554.72;665.37;694.04;470.60;746.16;547.85;700.02 + * 31;complicated.performance.reload.DAMP;2258.31;2345.74;2509.24;2579.71;2367.94;2365.94;2260.86;2324.23;2579.01;2412.63;2540.38;2069.80;2534.91;2443.48;2193.01;2442.99;2422.42;2475.35;2076.48;2092.95;2444.53;2353.86;2154.28;2354.61;2104.82 + * 32;complicated.performance.close.DAMP;334.44;516.66;432.49;341.29;309.30;365.20;332.16;311.42;370.81;301.81;381.13;299.39;317.60;314.10;372.44;314.76;306.24;349.85;382.08;352.53;309.40;298.44;314.10;315.44;405.22 + * 33;complicated.netmonitor.open.DAMP;469.70;597.87;468.36;823.09;696.39;477.19;487.78;495.92;587.89;471.48;555.02;507.45;883.33;522.15;756.86;713.64;593.82;715.13;477.15;717.85;586.79;556.97;631.43;629.55;581.16 + * 34;complicated.netmonitor.reload.DAMP;4033.55;3577.36;3655.61;3721.24;3874.29;3977.92;3778.62;3825.60;3984.65;3707.91;3985.24;3565.21;3702.40;3956.70;3627.14;3916.11;3929.11;3934.06;3590.60;3628.39;3618.84;3579.52;3953.04;3781.01;3682.69 + * 35;complicated.netmonitor.close.DAMP;1042.98;920.21;928.19;940.38;950.25;1043.61;1078.16;1077.38;1132.91;1095.05;1176.31;1256.83;1143.14;1234.61;1248.97;1242.29;1378.63;1312.74;1371.48;1373.15;1544.55;1422.51;1549.48;1616.55;1506.58 + displaylist_mutate: > + - contact: :miko and gfx + - source: `displaylist_mutate.html `__ + - type: `Page load`_ + - data: we load the displaylist_mutate.html page five times, measuring pageload each time, generating 5 data points. + - summarization: + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: test.py `__ + - description: + | This measures the amount of time it takes to render a page after + changing its display list. The page has a large number of display list + items (10,000), and mutates one every frame. The goal of the test is to + make displaylist construction a bottleneck, rather than painting or + other factors, and thus improvements or regressions to displaylist + construction will be visible. The test runs in ASAP mode to maximize + framerate, and the result is how quickly the test was able to mutate and + re-paint 600 items, one during each frame. + dromaeo: > + - description: + | Dromaeo suite of tests for JavaScript performance testing. See the + `Dromaeo wiki `__ for more + information. + + This suite is divided into several sub-suites. + + Each sub-suite is divided into tests, and each test is divided into + sub-tests. Each sub-test takes some (in theory) fixed piece of work and + measures how many times that piece of work can be performed in one + second. The score for a test is then the geometric mean of the + runs/second numbers for its sub-tests. The score for a sub-suite is the + geometric mean of the scores for its tests. + dromaeo_css: > + - contact: :emilio, and css/layout team + - source: `css.manifest `__ + - type: `Page load`_ + - reporting: speed in test runs per second (higher is better) + - data: Dromaeo has 6 subtests which run internal benchmarks, each benchmark reports about 180 raw data points each + - summarization: + * subtest: + Dromaeo is a custom benchmark which has a lot of micro tests + inside each subtest, because of this we use a custom `dromaeo + filter `__ + to summarize the subtest. Each micro test produces 5 data points and + for each 5 data points we take the mean, leaving 36 data points to + represent the subtest (assuming 180 points). These 36 micro test + means, are then run through a geometric_mean to produce a single + number for the dromaeo subtest. `source: + filter.py `__ + * suite: `geometric mean`_ of the 6 subtest results. + - description: + | Each page in the manifest is part of the dromaeo css benchmark. Each + page measures the performance of searching the DOM for nodes matching + various CSS selectors, using different libraries for the selector + implementation (jQuery, Dojo, Mootools, ExtJS, Prototype, and Yahoo UI). + - **Example Data** + * 0;dojo.html;2209.83;2269.68;2275.47;2278.83;2279.81;4224.43;4344.96;4346.74;4428.69;4459.82;4392.80;4396.38;4412.54;4414.34;4415.62;3909.94;4027.96;4069.08;4099.63;4099.94;4017.70;4018.96;4054.25;4068.74;4081.31;3825.10;3984.20;4053.23;4074.59;4106.63;3893.88;3971.80;4031.15;4046.68;4048.31;3978.24;4010.16;4046.66;4051.68;4056.37;4189.50;4287.98;4390.98;4449.89;4450.20;4536.23;4557.82;4588.40;4662.58;4664.42;4675.51;4693.13;4743.72;4758.12;4764.67;4138.00;4251.60;4346.22;4410.12;4417.23;4677.53;4702.48;4714.62;4802.59;4805.33;4445.07;4539.91;4598.93;4605.45;4618.79;4434.40;4543.09;4618.56;4683.98;4689.51;4485.26;4496.75;4511.23;4600.86;4602.08;4567.52;4608.33;4615.56;4619.31;4622.79;3469.44;3544.11;3605.80;3647.74;3658.56;3101.88;3126.41;3147.73;3159.92;3170.73;3672.28;3686.40;3730.74;3748.89;3753.59;4411.71;4521.50;4633.98;4702.72;4708.76;3626.62;3646.71;3713.07;3713.13;3718.91;3846.17;3846.25;3913.61;3914.63;3916.22;3982.88;4112.98;4132.26;4194.92;4201.54;4472.64;4575.22;4644.74;4645.42;4665.51;4120.13;4142.88;4171.29;4208.43;4211.03;4405.36;4517.89;4537.50;4637.77;4644.28;4548.25;4581.20;4614.54;4658.42;4671.09;4452.78;4460.09;4494.06;4521.30;4522.37;4252.81;4350.72;4364.93;4441.40;4492.78;4251.34;4346.70;4355.00;4358.89;4365.72;4494.64;4511.03;4582.11;4591.79;4592.36;4207.54;4308.94;4309.14;4406.71;4474.46 + * 1;ext.html;479.65;486.21;489.61;492.94;495.81;24454.14;33580.33;34089.15;34182.83;34186.15;34690.83;35050.30;35051.30;35071.65;35099.82;5758.22;5872.32;6389.62;6525.38;6555.57;8303.96;8532.96;8540.91;8544.00;8571.49;8360.79;8408.79;8432.96;8447.28;8447.83;5817.71;5932.67;8371.83;8389.20;8643.44;7983.80;8073.27;8073.84;8076.48;8078.15;24596.00;32518.84;32787.34;32830.51;32861.00;2220.87;2853.84;3333.53;3345.17;3445.47;24785.75;24971.75;25044.25;25707.61;25799.00;2464.69;2481.89;2527.57;2534.65;2534.92;217793.00;219347.90;219495.00;220059.00;297168.00;40556.19;53062.47;54275.73;54276.00;54440.37;50636.75;50833.49;50983.49;51028.49;51032.74;10746.36;10972.45;11450.37;11692.18;11797.76;8402.58;8415.79;8418.66;8426.75;8428.16;16768.75;16896.00;16925.24;16945.58;17018.15;7047.68;7263.13;7313.16;7337.38;7383.22;713.88;723.72;751.47;861.35;931.00;25454.36;25644.90;25801.87;25992.61;25995.00;819.89;851.23;852.00;886.59;909.89;14325.79;15064.92;15240.39;15431.23;15510.61;452382.00;458194.00;458707.00;459226.00;459601.00;45699.54;46244.54;46270.54;46271.54;46319.00;1073.94;1080.66;1083.35;1085.84;1087.74;26622.33;27807.58;27856.72;28040.58;28217.86;37229.81;37683.81;37710.81;37746.62;37749.81;220386.00;222903.00;240808.00;247394.00;247578.00;25567.00;25568.49;25610.74;25650.74;25710.23;26466.21;28718.71;36175.64;36529.27;36556.00;26676.00;30757.69;31965.84;34521.83;34622.65;32791.18;32884.00;33194.83;33720.16;34192.66;32150.36;32520.02;32851.18;32947.18;33128.01;29472.85;30214.09;30708.54;30999.23;32879.51;23822.88;23978.28;24358.88;24470.88;24515.51 + * 2;jquery.html;285.42;288.57;292.66;293.75;294.14;10313.00;10688.20;13659.11;13968.65;14003.93;13488.39;13967.51;13980.79;14545.13;15059.77;4361.37;4488.35;4489.44;4492.24;4496.69;3314.32;3445.07;4412.51;5020.75;5216.66;5113.49;5136.56;5141.31;5143.87;5156.28;5055.95;5135.02;5138.64;5215.82;5226.48;4550.98;4551.59;4553.07;4557.77;4559.16;18339.63;18731.53;18738.63;18741.16;18806.15;1474.99;1538.31;1557.52;1703.67;1772.16;12209.94;12335.44;12358.32;12516.50;12651.94;1520.94;1522.62;1541.37;1584.71;1642.50;57533.00;59169.41;59436.11;59758.70;59872.40;8669.13;8789.34;8994.37;9016.05;9064.95;11047.39;11058.39;11063.78;11077.89;11082.78;6401.81;6426.26;6504.35;6518.25;6529.61;6250.22;6280.65;6304.59;6318.91;6328.72;5144.28;5228.40;5236.21;5271.26;5273.79;1398.91;1450.05;1456.39;1494.66;1519.42;727.85;766.62;844.35;858.49;904.87;9912.55;10249.54;14936.71;16566.50;16685.00;378.04;381.34;381.44;385.67;387.23;5362.60;5392.78;5397.14;5497.12;5514.83;213309.00;318297.00;320682.00;322681.00;322707.00;56357.44;67892.66;68329.66;68463.32;69506.00;418.91;424.49;425.19;425.28;426.40;9363.39;9559.95;9644.00;9737.07;9752.80;33170.83;33677.33;34950.83;35607.47;35765.82;44079.34;44588.55;45396.00;46309.00;46427.30;6302.87;6586.51;6607.08;6637.44;6642.17;9776.17;9790.46;9931.90;10391.79;10392.43;8739.26;8838.38;8870.20;8911.50;8955.15;8422.83;8786.21;8914.00;9135.82;9145.36;8945.28;9028.37;9035.23;9116.64;9137.86;6433.90;6688.73;6822.11;6830.08;6833.90;8575.23;8599.87;8610.91;8655.65;9123.91 + * 3;mootools.html;1161.69;1333.31;1425.89;1500.37;1557.37;6706.93;7648.46;8020.04;8031.36;8049.64;7861.80;7972.40;7978.12;7993.32;7993.88;1838.83;1862.93;1864.11;1866.28;1866.71;1909.93;1921.83;1928.53;1954.07;1969.98;1808.68;1820.01;1821.30;1825.92;1826.91;1849.07;1904.99;1908.26;1911.24;1912.50;1856.86;1871.78;1873.72;1878.54;1929.57;6506.67;6752.73;7799.22;7830.41;7855.18;4117.18;4262.42;4267.30;4268.27;4269.62;2720.56;2795.36;2840.08;2840.79;2842.62;699.12;703.75;774.36;791.73;798.18;11096.22;11126.39;11132.72;11147.16;11157.44;3934.33;4067.37;4140.94;4149.75;4150.38;9042.82;9077.46;9083.55;9084.41;9086.41;4431.47;4432.84;4437.33;4438.40;4440.44;3935.67;3937.31;3937.43;3940.53;3976.68;3247.17;3307.90;3319.90;3323.32;3330.60;1001.90;1016.87;1021.12;1021.67;1022.05;1016.34;1019.09;1036.62;1056.81;1057.76;7345.56;7348.56;7391.89;7393.85;7406.30;374.27;392.53;394.73;397.28;398.26;5588.58;5653.21;5655.07;5659.15;5660.66;9775.41;9860.51;9938.40;9959.85;9968.45;9733.42;9904.31;9953.05;9960.55;9967.20;6399.26;6580.11;7245.93;7336.96;7386.78;7162.00;7245.49;7249.38;7250.75;7304.63;8458.24;8583.40;8651.57;8717.39;8742.39;8896.42;8904.60;8927.96;8960.73;8961.82;7483.48;7747.77;7763.46;7766.34;7773.07;7784.00;7821.41;7827.18;7849.18;7855.49;7012.16;7141.57;7250.09;7253.13;7335.89;6977.97;7015.51;7042.40;7204.35;7237.20;7160.46;7293.23;7321.27;7321.82;7331.16;6268.69;6324.11;6325.78;6328.56;6342.40;6554.54;6625.30;6646.00;6650.30;6674.90 + * 4;prototype.html;237.05;251.94;256.61;259.65;263.52;4488.53;4676.88;4745.24;4745.50;4748.81;4648.47;4660.21;4666.58;4671.88;4677.32;3602.84;3611.40;3613.69;3615.69;3619.15;3604.41;3619.44;3623.24;3627.66;3628.11;3526.59;3589.35;3615.93;3616.35;3622.80;3624.69;3626.84;3628.47;3631.22;3632.15;3184.76;3186.11;3187.16;3187.78;3189.35;4353.43;4466.46;4482.57;4616.72;4617.88;4012.18;4034.84;4047.07;4047.82;4055.29;4815.11;4815.21;4816.11;4817.08;4820.40;3300.31;3345.18;3369.55;3420.98;3447.97;5026.99;5033.82;5034.50;5034.95;5038.97;3516.72;3520.79;3520.95;3521.81;3523.47;3565.29;3574.23;3574.37;3575.82;3578.37;4045.19;4053.51;4056.76;4058.76;4059.00;4714.67;4868.66;4869.66;4873.54;4878.29;1278.20;1300.92;1301.13;1301.17;1302.47;868.94;871.16;878.50;883.40;884.85;3874.71;3878.44;3881.61;3882.67;3886.92;4959.83;4968.45;4969.50;4971.38;4972.30;3862.69;3870.15;3871.79;3873.83;3878.07;2690.15;2711.66;2714.42;2715.39;2715.89;4349.04;4349.63;4351.33;4353.59;4355.46;4950.95;5101.08;5107.69;5120.21;5120.39;4336.63;4360.76;4361.96;4362.28;4365.43;4928.75;4939.41;4939.56;4943.95;4966.78;4869.03;4886.24;4888.85;4889.14;4895.76;4362.39;4362.78;4363.96;4365.00;4365.08;3408.00;3470.03;3476.37;3546.65;3547.34;4905.73;4926.21;4926.70;4926.93;4929.43;4682.88;4694.91;4696.30;4697.06;4699.69;4688.86;4691.25;4691.46;4698.37;4699.41;4628.07;4631.31;4633.42;4634.00;4636.00;4699.44;4796.02;4808.83;4809.95;4813.52;4719.10;4720.41;4722.95;4723.03;4723.53 + * 5;yui.html;569.72;602.22;627.02;647.49;692.84;9978.30;10117.54;10121.70;10129.75;10137.24;9278.68;9291.44;9349.00;9370.53;9375.86;475.79;481.92;606.51;607.42;618.73;617.68;618.89;623.30;626.58;631.85;501.81;649.76;653.22;655.69;656.71;510.62;645.56;657.42;657.88;658.39;475.53;476.77;476.80;476.92;476.96;9895.16;9976.15;9988.25;9989.85;9996.40;9483.15;9545.75;9676.37;9808.51;10360.22;8331.29;8397.87;8538.06;8714.69;8803.78;2748.93;2800.93;2802.59;2857.33;2864.46;33757.16;33804.83;33859.32;33931.00;33991.32;7818.65;7846.92;7892.09;8170.55;8217.75;13691.38;13692.86;13693.25;13698.73;13706.66;5378.70;5517.83;5615.86;5616.16;5624.00;2985.63;3002.97;3003.07;3037.73;3038.87;2459.10;2502.52;2504.91;2507.07;2507.26;396.62;405.78;411.43;412.03;412.56;543.45;550.75;568.50;578.59;592.25;6762.21;6901.72;6984.27;7064.22;7122.29;454.78;519.40;539.29;543.96;566.16;3235.39;3266.13;3453.26;3498.79;3518.54;39079.22;39722.80;41350.59;41422.38;41540.17;34435.14;34606.31;34623.31;34661.00;34672.48;29449.12;29530.11;30507.24;31938.52;31961.52;7449.33;7524.62;7629.73;7712.96;7796.42;22917.43;23319.00;23441.41;23582.88;23583.53;29780.40;30272.55;31761.00;31765.84;31839.36;6112.45;6218.35;6476.68;6603.54;6793.66;10385.79;10471.69;10518.53;10552.74;10644.95;9563.52;9571.33;9617.09;9946.35;9976.80;9406.11;9518.48;9806.46;10102.44;10173.19;9482.43;9550.28;9878.21;9902.90;9951.45;8343.17;8511.00;8606.00;8750.21;8869.29;8234.96;8462.70;8473.49;8499.58;8808.91 + dromaeo_dom: > + - contact: :peterv and dom team + - source: `dom.manifest `__ + - type: `Page load`_ + - data: see Dromaeo DOM + - reporting: speed in test runs per second (higher is better) + - description: + | Each page in the manifest is part of the dromaeo dom benchmark. These + are the specific areas that Dromaeo DOM covers: + + * **DOM Attributes**: + Measures performance of getting and setting a DOM attribute, both via + ``getAttribute`` and via a reflecting DOM property. Also throws in some + expando getting/setting for good measure. + + * **DOM Modification**: + Measures performance of various things that modify the DOM tree: + creating element and text nodes and inserting them into the DOM. + + * **DOM Query**: + Measures performance of various methods of looking for nodes in the DOM: + ``getElementById``, ``getElementsByTagName``, and so forth. + + * **DOM Traversal**: + Measures performance of various accessors (``childNodes``, + ``firstChild``, etc) that would be used when doing a walk over the DOM + tree. + + Please see `dromaeo_css <#dromaeo_css>`_ for examples of data. + glterrain: > + - contact: :jgilbert and gfx + - source: `glterrain `__ + - type: `Page load`_ + - data: we load the perftest.html page (which generates 4 metrics to track) 25 times, resulting in 4 sets of 25 data points + - summarization: Measures average frames interval while animating a simple WebGL scene + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 24; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - description: + | This tests animates a simple WebGL scene (static textured landscape, one + moving light source, rotating viewport) and measure the frames + throughput (expressed as average interval) over 100 frames. It runs in + ASAP mode (vsync off) and measures the same scene 4 times (for all + combination of antialiasing and alpha. It reports the results as 4 + values) one for each combination. Lower results are better. + - **Example Data** + * 0;0.WebGL-terrain-alpha-no-AA-no;19.8189;20.57185;20.5069;21.09645;20.40045;20.89025;20.34285;20.8525;20.45845;20.6499;19.94505;20.05285;20.316049;19.46745;19.46135;20.63865;20.4789;19.97015;19.9546;20.40365;20.74385;20.828649;20.78295;20.51685;20.97069 + * 1;1.WebGL-terrain-alpha-no-AA-yes;23.0464;23.5234;23.34595;23.40609;22.54349;22.0554;22.7933;23.00685;23.023649;22.51255;23.25975;23.65819;22.572249;22.9195;22.44325;22.95015;23.3567;23.02089;22.1459;23.04545;23.09235;23.40855;23.3296;23.18849;23.273249 + * 2;2.WebGL-terrain-alpha-yes-AA-no;24.01795;23.889449;24.2683;24.34649;23.0562;24.02275;23.54819;24.1874;23.93545;23.53629;23.305149;23.62459;24.01589;24.06405;24.143449;23.998549;24.08205;24.26989;24.0736;24.2346;24.01145;23.7817;23.90785;24.7118;24.2834 + * 3;3.WebGL-terrain-alpha-yes-AA-yes;25.91375;25.87005;25.64875;25.15615;25.5475;24.497449;24.56385;25.57529;25.54889;26.31559;24.143949;25.09895;24.75049;25.2087;25.52385;25.9017;25.4439;24.3495;25.9269;25.734449;26.4126;25.547449;25.667249;25.679349;25.9565 + glvideo: > + - contact: :jgilbert and gfx + - source: `glvideo `__ + - type: `Page load`_ + - data: 5 cycles of the entire benchmark, each subtest will have 5 data points (see below) + - summarization: WebGL video texture update with 1080p video. Measures mean tick time across 100 ticks. + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4; `source: + test.py `__ + * suite: `geometric mean`_ of the 4 subtest results. + - **Lower is better** + - **Example Data** + * 0;Mean tick time across 100 ticks: ;54.6916;49.0534;51.21645;51.239650000000005;52.44295 + - description: + | This test playbacks a video file and ask WebGL to draw video frames as + WebGL textures for 100 ticks. It collects the mean tick time across 100 + ticks to measure how much time it will spend for a video texture upload + to be a WebGL texture (gl.texImage2D). We run it for 5 times and ignore + the first found. Lower results are better. + kraken: > + - contact: :sdetar, jandem, and SpiderMonkey Team + - source: `kraken.manifest `__ + - type: `Page load`_ + - measuring: JavaScript performance + - reporting: Total time for all tests, in ms (lower is better) + - data: there are 14 subtests in kraken, each subtest is an internal benchmark and generates 10 data points, or 14 sets of 10 data points. + - summarization: + * subtest: For all of the 10 data points, we take the + `mean `__ + to report a single number. + * suite: `geometric mean`_ of the 14 subtest results. + - description: + | This is the `Kraken `__ javascript + benchmark taken verbatim and slightly modified to fit into our + pageloader extension and talos harness. + - **Example Data** + * 0;ai-astar;100;95;98;102;101;99;97;98;98;102 + * 1;audio-beat-detection;147;147;191;173;145;139;186;143;183;140 + * 2;audio-dft;161;156;158;157;160;158;160;160;159;158 + * 3;audio-fft;82;83;83;154;83;83;82;83;160;82 + * 4;audio-oscillator;96;96;141;95;95;95;129;96;95;134 + * 5;imaging-gaussian-blur;116;115;116;115;115;115;115;115;117;116 + * 6;imaging-darkroom;166;164;166;165;166;166;165;165;165;166 + * 7;imaging-desaturate;87;87;87;87;88;87;88;87;87;87 + * 8;json-parse-financial;75;77;77;76;77;76;77;76;77;77 + * 9;json-stringify-tinderbox;79;79;80;79;78;79;79;78;79;79 + * 10;stanford-crypto-aes;98;97;96;98;98;98;98;98;113;95 + * 11;stanford-crypto-ccm;130;138;130;127;137;134;134;132;147;129 + * 12;stanford-crypto-pbkdf2;176;187;183;183;176;174;181;187;175;173 + * 13;stanford-crypto-sha256-iterative;86;85;83;84;86;85;85;86;83;83 + motionmark_animometer: > + - contact: :b0bh00d, :jeffm, and gfx + - source: `source `__ `manifests `__ + - type: `Page load`_ + - measuring: benchmark measuring the time to animate complex scenes + - summarization: + * subtest: FPS from the subtest, each subtest is run for 15 seconds, + repeat this 5 times and report the median value + * suite: we take a geometric mean of all the subtests (9 for + animometer, 11 for html suite) + motionmark_htmlsuite: > + - contact: :jrmuizel and graphics(gfx) team + motionmark_webgl: > + - contact: :jgilbert and gfx + - source: `source `__ `manifest `__ + - type: `Page load`_ + - measuring: Draw call performance in WebGL + - summarization: + * subtest: FPS from the subtest, each subtest is run once for 15 + seconds, report the average FPS over that time. + * suite: identical to subtest + pdfpaint: > + - contact: :calixte and CI and Quality Tools team + - source: + - type: `Page load`_ + - reporting: time from *performance.timing.navigationStart* to *pagerendered* event in ms (lower is better) + - data: load a PDF 20 times + perf_reftest: > + - contact: :emilio and css/layout team + - source: `perf-reftest `__ + - type: `Page load`_ + - reporting: intervals in ms (lower is better) + - data: each test loads 25 times + - summarization: + * subtest: `ignore first`_ 5 data points, then take the `median`_ of the remaining 20 data points; `source: + test.py `__ + * suite: identical to subtest + - description: + | **Important note:** This test now requires an 'opt' build. If the + perf-reftest is ran on a non-opt build, it will time out (more + specifically on innertext-1.html, and possibly others in the future). + + Style system performance test suite. The perf-reftest suite is a unique + talos suite where each subtest loads two different test pages: a 'base' + page (i.e. bloom_basic) and a 'reference' page (i.e. bloom_basic_ref), + and then compares each of the page load times against eachother to + determine the variance. + + Talos runs each of the two pages as if they are stand-alone tests, and + then calculates and reports the variance; the test output 'replicates' + reported from bloom_basic are actually the comparisons between the + 'base' and 'reference' pages for each page load cycle. The suite + contains multiple subtests, each of which contains a base page and a + reference page. + + If you wish to see the individual 'base' and 'reference' page results + instead of just the reported difference, the 'base_replicates' and + 'ref_replicates' can be found in the PERFHERDER_DATA log file output, + and in the 'local.json' talos output file when running talos locally. In + production, both of the page replicates are also archived in the + perfherder-data.json file. The perfherder-data.json file is archived + after each run in production, and can be found on the Treeherder Job + Details tab when the perf-reftest job symbol is selected. + + This test suite was ported over from the `style-perf-tests `__. + - **Example Data** + * "replicates": [1.185, 1.69, 1.22, 0.36, 11.26, 3.835, 3.315, 1.355, 3.185, 2.485, 2.2, 1.01, 0.9, 1.22, 1.9, + 0.285, 1.52, 0.31, 2.58, 0.725, 2.31, 2.67, 3.295, 1.57, 0.3], "value": 1.7349999999999999, "unit": "ms", + * "base_replicates": [166.94000000000003, 165.16, 165.64000000000001, 165.04000000000002, 167.355, 165.175, + 165.325, 165.11, 164.175, 164.78, 165.555, 165.885, 166.83499999999998, 165.76500000000001, 164.375, 166.825, + 167.13, 166.425, 169.22500000000002, 164.955, 165.335, 164.45000000000002, 164.85500000000002, 165.005, 166.035]}], + * "ref_replicates": [165.755, 166.85000000000002, 166.85999999999999, 165.4, 178.615, 169.01, 168.64, 166.465, + 167.36, 167.265, 167.75500000000002, 166.895, 167.735, 166.985, 166.275, 166.54000000000002, 165.61, 166.115, + 166.64499999999998, 165.68, 167.64499999999998, 167.12, 168.15, 166.575, 166.335], + perf_reftest_singletons: > + - contact: :emelio and Layout team + - source: `perf-reftest-singletons `__ + - type: `Page load`_ + - reporting: intervals in ms (lower is better) + - data: each test loads 25 times + - summarization: + * subtest: `ignore first`_ 5 data points, then take the `median`_ of the remaining 20 data points; `source: + test.py `__ + * suite: identical to subtest + - description: + | Individual style system performance tests. The perf-reftest-singletons + suite runs the perf-reftest 'base' pages (i.e. bloom_basic) test + individually, and reports the values for that single test page alone, + NOT the comparison of two different pages. There are multiple subtests + in this suite, each just containing the base page on its own. + + This test suite was ported over from the `style-perf-tests `__. + - **Example Data** + * bloombasic.html;88.34000000000003;88.66499999999999;94.815;92.60500000000002;95.30000000000001; + * 98.80000000000001;91.975;87.73500000000001;86.925;86.965;93.00500000000001;98.93;87.45000000000002; + * 87.14500000000001;92.78500000000001;86.96499999999999;98.32000000000001;97.485;90.67000000000002; + * 86.72500000000001;95.665;100.67;101.095;94.32;91.87 + rasterflood_gradient: > + - contact: :jrmuizel, :jimm, and gfx + - source: `rasterflood_gradient.html `__ + - type: `Page load`_ + - data: we load the rasterflood_gradient.html page ten times, computing a score each time, generating 10 data points. + - summarization: + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 9; `source: + test.py `__ + - description: + | This page animates some complex gradient patterns in a + requestAnimationFrame callback. However, it also churns the CPU during + each callback, spinning an empty loop for 14ms each frame. The intent is + that, if we consider the rasterization costs to be 0, then the animation + should run close to 60fps. Otherwise it will lag. Since rasterization + costs are not 0, the lower we can get them, the faster the test will + run. The test runs in ASAP mode to maximize framerate. + + The test runs for 10 seconds, and the resulting score is how many frames + we were able to render during that time. Higher is better. Improvements + (or regressions) to general painting performance or gradient rendering + will affect this benchmark. + rasterflood_svg: > + - contact: :jrmuizel, :jimm, and gfx + - source: `rasterflood_svg.html `__ + - type: `Page load`_ + - data: we load the rasterflood_svg.html page ten times, measuring pageload each time, generating 10 data points. + - summarization: + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 9; `source: + test.py `__ + - description: + | This page animates some complex SVG patterns in a requestAnimationFrame + callback. However, it also churns the CPU during each callback, spinning + an empty loop for 14ms each frame. The intent is that, if we consider + the rasterization costs to be 0, then the animation should run close to + 60fps. Otherwise it will lag. Since rasterization costs are not 0, the + lower we can get them, the faster the test will run. The test runs in + ASAP mode to maximize framerate. The result is how quickly the browser + is able to render 600 frames of the animation. + + Improvements (or regressions) to general painting performance or SVG are + likely to affect this benchmark. + sessionrestore: > + - contact: :dale, :dao, :farre, session restore module owners/peers, and DOM team + - source: `talos/sessionrestore `__ + - bug: `bug 936630 `__, + `bug 1331937 `__, + `bug 1531520 `__ + - type: Startup_ + - measuring: time spent reading and restoring the session. + - reporting: interval in ms (lower is better). + - data: we load the session restore index page 10 times to collect 1 set of 10 data points. + - summarization: + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 9 data points; `source: + test.py `__ + * suite: identical to subtest + - description: + | Three tests measure the time spent reading and restoring the session + from a valid sessionstore.js. Time is counted from the *process start* + until the *sessionRestored* event. + + In *sessionrestore*, this is tested with a configuration that requires + the session to be restored. In *sessionrestore_no_auto_restore*, this is + tested with a configuration that requires the session to not be + restored. Both of the above tests use a sessionstore.js file that + contains one window and roughly 89 tabs. In + *sessionrestore_many_windows*, this is tested with a sessionstore.js + that contains 3 windows and 130 tabs. The first window contains 50 tabs, + 80 remaning tabs are divided equally between the second and the third + window. + - **Example Data** + * [2362.0, 2147.0, 2171.0, 2134.0, 2116.0, 2145.0, 2141.0, 2141.0, 2136.0, 2080.0] + sessionrestore_many_windows: > + - See `sessionrestore <#sessionrestore>`_. + sessionrestore_no_auto_restore: > + - See `sessionrestore <#sessionrestore>`_. + startup_about_home_paint: > + - contact: :mconley, Firefox Desktop Front-end team, :gijs, :fqueze, and :dthayer + - source: `addon `__ + - type: Startup_ + - measuring: The time from process start to the point where the about:home page reports that it has painted the Top Sites. + - data: we load restart the browser 20 times, and collect a timestamp for each run. + - reporting: test time in ms (lower is better) + - **Example Data** + * [1503.0, 1497.0, 1523.0, 1536.0, 1511.0, 1485.0, 1594.0, 1580.0, 1531.0, 1471.0, 1502.0, 1520.0, 1488.0, 1533.0, 1531.0, 1502.0, 1486.0, 1489.0, 1487.0, 1475.0] + startup_about_home_paint_cached: > + - contact: :mconley, Firefox Desktop Front-end team, :gijs, :fqueze, and :dthayer + - See `startup_about_home_paint <#startup_about_home_paint>`_. + - description: + | Tests loading about:home on startup with the about:home startup cache enabled. + startup_about_home_paint_realworld_webextensions: > + - contact: :mconley, Firefox Desktop Front-end team, :gijs, :fqueze, and :dthayer + - source: `addon `__ + - type: Startup_, `Real-world WebExtensions`_ + - measuring: The time from process start to the point where the about:home page reports that it has painted the Top Sites when 5 popular, real-world WebExtensions are installed and enabled. + - data: we install the 5 real-world WebExtensions, then load and restart the browser 20 times, and collect a timestamp for each run. + - reporting: test time in ms (lower is better) + - **Example Data** + * [1503.0, 1497.0, 1523.0, 1536.0, 1511.0, 1485.0, 1594.0, 1580.0, 1531.0, 1471.0, 1502.0, 1520.0, 1488.0, 1533.0, 1531.0, 1502.0, 1486.0, 1489.0, 1487.0, 1475.0] + stylebench: > + - contact: :emilio and Layout team + - source: `stylebench.manifest `__ + - type: `Page load`_ + - measuring: speed of dynamic style recalculation + - reporting: runs/minute score + tabpaint: > + - contact: :mconley, Firefox Desktop Front-end team, :gijs, :fqueze, and :dthayer + - source: `tabpaint `__ + - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1253382 + - type: `Page load`_ + - measuring: + * The time it takes to paint the content of a newly opened tab when + the tab is opened from the parent (ex: by hitting Ctrl-T) + * The time it takes to paint the content of a newly opened tab when + the tab is opened from content (ex: by clicking on a target="_blank" link) + - **NOT** measuring: + * The time it takes to animate the tabs. That's the responsibility + of the TART test. tabpaint is strictly concerned with the painting of the web content. + - data: we load the tabpaint trigger page 20 times, each run produces + two values (the time it takes to paint content when opened from the + parent, and the time it takes to paint content when opened from + content), resulting in 2 sets of 20 data points. + - **Example Data** + * 0;tabpaint-from-parent;105;76;66;64;64;69;65;63;70;68;64;60;65;63;54;61;64;67;61;64 + * 1;tabpaint-from-content;129;68;72;72;70;78;86;85;82;79;120;92;76;80;74;82;76;89;77;85 + - summarization: + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 19 data points + * suite: geometric_mean(subtests) + tabswitch: > + - contact: :mconley, Firefox Desktop Front-end team, :gijs, :fqueze, and :dthayer + - source: `tabswitch `__ + - bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1166132 + - type: `Page load`_ + - measuring: + * The time between switching a tab and the first paint to the content area + - reporting: + - data: we load 50 web pages 5 times each, resulting in 50 sets of 5 data points. + - **To run it locally**, you'd need `tp5n.zip <#Page_sets>`__. + - summarization: + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 4 data points; `source: + test.py `__ + * suite: `geometric mean`_ of the 50 subtest results. + - **Example Data** + * 0;amazon.com/www.amazon.com/Kindle-Wireless-Reader-Wifi-Graphite/dp/B002Y27P3M/507846.html;66.34;54.15;53.08;55.79;49.12 + * 1;cgi.ebay.com/cgi.ebay.com/ALL-NEW-KINDLE-3-eBOOK-WIRELESS-READING-DEVICE-W-WIFI-/130496077314@pt=LH_DefaultDomain_0&hash=item1e622c1e02.html;50.85;46.57;39.51;36.71;36.47 + * 2;163.com/www.163.com/index.html;95.05;80.80;76.09;69.29;68.96 + * 3;mail.ru/mail.ru/index.html;66.21;52.04;56.33;55.11;45.61 + * 4;bbc.co.uk/www.bbc.co.uk/news/index.html;35.80;44.59;48.02;45.71;42.58 + * 5;store.apple.com/store.apple.com/us@mco=Nzc1MjMwNA.html;52.98;49.45;58.47;56.79;61.29 + * 6;imdb.com/www.imdb.com/title/tt1099212/index.html;46.51;55.12;46.22;50.60;47.63 + * 7;cnn.com/www.cnn.com/index.html;43.02;50.77;43.88;49.70;50.02 + * 8;sohu.com/www.sohu.com/index.html;74.03;62.89;63.30;67.71;89.35 + * 9;youku.com/www.youku.com/index.html;43.98;52.69;45.80;63.00;57.02 + * 10;ifeng.com/ifeng.com/index.html;88.01;87.54;104.47;94.93;113.91 + * 11;tudou.com/www.tudou.com/index.html;45.32;48.10;46.03;39.26;58.38 + * 12;chemistry.about.com/chemistry.about.com/index.html;38.24;37.07;39.59;39.48;39.60 + * 13;beatonna.livejournal.com/beatonna.livejournal.com/index.html;35.59;50.75;36.17;48.49;52.61 + * 14;rakuten.co.jp/www.rakuten.co.jp/index.html;90.28;71.95;62.66;60.33;67.76 + * 15;uol.com.br/www.uol.com.br/index.html;42.89;48.05;53.77;40.02;42.41 + * 16;thepiratebay.org/thepiratebay.org/top/201.html;40.46;42.46;47.63;57.66;45.49 + * 17;page.renren.com/page.renren.com/index.html;47.61;66.78;47.91;62.78;47.19 + * 18;chinaz.com/chinaz.com/index.html;50.34;58.17;118.43;55.47;63.80 + * 19;globo.com/www.globo.com/index.html;41.34;38.52;42.82;53.14;45.20 + * 20;spiegel.de/www.spiegel.de/index.html;33.60;34.34;36.25;36.18;47.04 + * 21;dailymotion.com/www.dailymotion.com/us.html;37.68;36.13;39.52;37.15;42.79 + * 22;goo.ne.jp/goo.ne.jp/index.html;50.74;47.30;63.04;58.41;58.96 + * 23;stackoverflow.com/stackoverflow.com/questions/184618/what-is-the-best-comment-in-source-code-you-have-ever-encountered.html;44.66;44.40;43.39;47.38;57.65 + * 24;ezinearticles.com/ezinearticles.com/index.html@Migraine-Ocular---The-Eye-Migraines&id=4684133.html;37.38;45.01;40.29;36.26;39.28 + * 25;huffingtonpost.com/www.huffingtonpost.com/index.html;39.57;43.35;55.01;44.13;58.28 + * 26;media.photobucket.com/media.photobucket.com/image/funny%20gif/findstuff22/Best%20Images/Funny/funny-gif1.jpg@o=1.html;39.77;42.46;75.54;42.38;47.72 + * 27;imgur.com/imgur.com/gallery/index.html;34.72;37.37;46.74;40.93;37.08 + * 28;reddit.com/www.reddit.com/index.html;42.47;39.89;51.54;51.51;41.68 + * 29;noimpactman.typepad.com/noimpactman.typepad.com/index.html;54.28;47.40;52.38;52.15;50.97 + * 30;myspace.com/www.myspace.com/albumart.html;48.97;64.12;61.66;48.32;68.53 + * 31;mashable.com/mashable.com/index.html;36.76;40.95;35.30;53.86;42.76 + * 32;dailymail.co.uk/www.dailymail.co.uk/ushome/index.html;42.06;40.64;44.24;37.32;61.35 + * 33;whois.domaintools.com/whois.domaintools.com/mozilla.com.html;34.73;35.23;39.25;48.24;35.72 + * 34;indiatimes.com/www.indiatimes.com/index.html;52.67;55.51;46.29;52.69;58.82 + * 35;reuters.com/www.reuters.com/index.html;32.92;33.08;36.95;39.23;39.27 + * 36;xinhuanet.com/xinhuanet.com/index.html;125.85;102.56;138.89;130.34;147.45 + * 37;56.com/www.56.com/index.html;63.89;75.00;61.45;62.20;58.67 + * 38;bild.de/www.bild.de/index.html;35.61;43.74;34.79;33.45;31.83 + * 39;guardian.co.uk/www.guardian.co.uk/index.html;38.91;55.93;62.34;42.63;45.99 + * 40;naver.com/www.naver.com/index.html;78.10;89.07;127.67;75.18;109.32 + * 41;yelp.com/www.yelp.com/biz/alexanders-steakhouse-cupertino.html;42.54;46.92;39.19;49.82;50.43 + * 42;wsj.com/online.wsj.com/home-page.html;46.43;55.51;44.16;81.79;48.78 + * 43;google.com/www.google.com/search@q=mozilla.html;35.62;36.71;44.47;45.00;40.22 + * 44;xunlei.com/xunlei.com/index.html;67.57;60.69;83.83;85.53;85.08 + * 45;aljazeera.net/aljazeera.net/portal.html;65.03;51.84;73.29;64.77;69.70 + * 46;w3.org/www.w3.org/standards/webdesign/htmlcss.html;53.57;58.50;72.98;66.95;55.62 + * 47;homeway.com.cn/www.hexun.com/index.html;105.59;117.32;108.95;116.10;70.32 + * 48;youtube.com/www.youtube.com/music.html;40.53;41.48;59.67;40.81;40.07 + * 49;people.com.cn/people.com.cn/index.html;96.49;103.64;115.12;66.05;117.84 + tart: > + - contact: :mconley, Firefox Desktop Front-end team, :gijs, :fqueze, and :dthayer + - source: `tart `__ + - type: `Page load`_ + - measuring: Desktop Firefox UI animation speed and smoothness + - reporting: intervals in ms (lower is better) - see below for details + - data: there are 30 reported subtests from TART which we load 25 times, resulting in 30 sets of 25 data points. + - summarization: + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 24 data points; `source: + test.py `__ + * suite: `geometric mean`_ of the 30 subtest results. + - TART is the **Tab Animation Regression Test**. + - TART tests tab animation on these cases: + - Simple: single new tab of about:blank open/close without affecting (shrinking/expanding) other tabs. + - icon: same as above with favicons and long title instead of about:blank. + - Newtab: newtab open with thumbnails preview - without affecting other tabs, with and without preload. + - Fade: opens a tab, then measures fadeout/fadein (tab animation without the overhead of opening/closing a tab). + * Case 1 is tested with DPI scaling of 1. + * Case 2 is tested with DPI scaling of 1.0 and 2.0. + * Case 3 is tested with the default scaling of the test system. + * Case 4 is tested with DPI scaling of 2.0 with the "icon" tab (favicon and long title). + - Each animation produces 3 test results: + * error: difference between the designated duration and the actual completion duration from the trigger. + * half: average frame interval over the 2nd half of the animation. + * all: average frame interval over all recorded intervals. + * And the run logs also include the explicit intervals from which these 3 values were derived. + - **Example Data** + * 0;simple-open-DPI1.half.TART;2.35;2.42;2.63;2.47;2.71;2.38;2.37;2.41;2.48;2.70;2.44;2.41;2.51;2.43;2.41;2.56;2.76;2.49;2.36;2.40;2.70;2.53;2.35;2.46;2.47 + * 1;simple-open-DPI1.all.TART;2.80;2.95;3.12;2.92;3.46;2.87;2.92;2.99;2.89;3.24;2.94;2.95;3.25;2.92;3.02;3.00;3.21;3.31;2.84;2.87;3.10;3.13;3.10;2.94;2.95 + * 2;simple-open-DPI1.error.TART;33.60;36.33;35.93;35.97;38.17;34.77;36.00;35.01;36.25;36.22;35.24;35.76;36.64;36.31;34.74;34.40;34.34;41.48;35.04;34.83;34.27;34.04;34.37;35.22;36.52 + * 3;simple-close-DPI1.half.TART;1.95;1.88;1.91;1.94;2.00;1.97;1.88;1.76;1.84;2.18;1.99;1.83;2.04;1.93;1.81;1.77;1.79;1.90;1.82;1.84;1.78;1.75;1.76;1.89;1.81 + * 4;simple-close-DPI1.all.TART;2.19;2.08;2.07;2.32;2.65;2.32;2.26;1.96;2.02;2.26;2.05;2.16;2.19;2.11;2.04;1.98;2.05;2.02;2.01;2.11;1.97;1.97;2.05;2.01;2.12 + * 5;simple-close-DPI1.error.TART;21.35;23.87;22.60;22.02;22.97;22.35;22.15;22.79;21.81;21.90;22.26;22.58;23.15;22.43;22.76;23.36;21.86;22.70;22.96;22.70;22.28;22.03;21.78;22.33;22.23 + * 6;icon-open-DPI1.half.TART;2.42;2.33;2.50;2.58;2.36;2.51;2.60;2.35;2.52;2.51;2.59;2.34;3.29;2.63;2.46;2.57;2.53;2.50;2.39;2.51;2.44;2.66;2.72;2.36;2.52 + * 7;icon-open-DPI1.all.TART;3.12;2.94;3.42;3.23;3.10;3.21;3.33;3.14;3.24;3.32;3.46;2.90;3.65;3.19;3.27;3.47;3.32;3.13;2.95;3.23;3.21;3.33;3.47;3.15;3.32 + * 8;icon-open-DPI1.error.TART;38.39;37.96;37.03;38.85;37.03;37.17;37.19;37.56;36.67;36.33;36.89;36.85;37.54;38.46;35.38;37.52;36.68;36.48;36.03;35.71;37.12;37.08;37.74;38.09;35.85 + * 9;icon-close-DPI1.half.TART;1.94;1.93;1.79;1.89;1.83;1.83;1.90;1.89;1.75;1.76;1.77;1.74;1.81;1.86;1.95;1.99;1.73;1.83;1.97;1.80;1.94;1.84;2.01;1.88;2.03 + * 10;icon-close-DPI1.all.TART;2.14;2.14;1.98;2.03;2.02;2.25;2.29;2.13;1.97;2.01;1.94;2.01;1.99;2.05;2.11;2.09;2.02;2.02;2.12;2.02;2.20;2.11;2.19;2.07;2.27 + * 11;icon-close-DPI1.error.TART;24.51;25.03;25.17;24.54;23.86;23.70;24.02;23.61;24.10;24.53;23.92;23.75;23.73;23.78;23.42;25.40;24.21;24.55;23.96;24.96;24.41;24.96;24.16;24.20;23.65 + * 12;icon-open-DPI2.half.TART;2.60;2.60;2.60;2.53;2.51;2.53;2.59;2.43;2.66;2.60;2.47;2.61;2.64;2.43;2.49;2.63;2.61;2.60;2.52;3.06;2.65;2.74;2.69;2.44;2.43 + * 13;icon-open-DPI2.all.TART;3.45;3.22;3.38;3.47;3.10;3.31;3.47;3.13;3.37;3.14;3.28;3.20;3.40;3.15;3.14;3.23;3.41;3.16;3.26;3.55;3.29;3.49;3.44;3.11;3.22 + * 14;icon-open-DPI2.error.TART;40.20;37.86;37.53;41.46;37.03;38.77;37.48;36.97;37.28;37.72;36.09;36.71;38.89;38.21;37.37;38.91;36.79;36.10;37.60;36.99;37.56;35.76;38.92;37.46;37.52 + * 15;icon-close-DPI2.half.TART;2.27;1.97;1.83;1.86;2.08;1.88;1.80;1.90;1.77;1.89;2.06;1.89;1.89;1.86;2.01;1.79;1.78;1.83;1.89;1.85;1.74;1.82;1.84;1.81;1.79 + * 16;icon-close-DPI2.all.TART;2.33;2.13;2.18;2.03;2.33;2.03;1.95;2.06;1.96;2.13;2.25;2.10;2.13;2.03;2.18;2.00;2.05;2.01;2.08;2.05;1.96;2.04;2.10;2.04;2.08 + * 17;icon-close-DPI2.error.TART;22.99;23.02;24.32;23.58;23.05;23.34;22.92;23.22;22.90;23.33;23.33;23.05;22.80;23.45;24.05;22.39;22.14;22.97;22.85;22.13;22.89;22.98;23.69;22.99;23.08 + * 18;iconFade-close-DPI2.half.TART;2.14;1.84;1.78;1.84;1.66;2.07;1.81;3.82;1.68;1.85;1.62;2.54;2.06;1.85;2.17;1.80;1.71;1.67;2.11;1.73;2.94;2.14;1.93;1.72;2.05 + * 19;iconFade-close-DPI2.all.TART;2.17;1.76;1.80;1.89;1.70;1.93;1.80;3.38;1.78;1.90;1.70;2.50;1.94;1.81;2.29;1.82;1.79;1.76;2.23;1.80;2.85;2.06;1.84;1.83;2.09 + * 20;iconFade-close-DPI2.error.TART;4.67;4.11;3.69;4.51;4.46;3.88;4.54;3.68;4.56;3.82;4.32;4.87;4.42;3.72;3.72;4.54;4.93;4.46;4.64;3.39;4.09;3.28;3.58;4.11;3.80 + * 21;iconFade-open-DPI2.half.TART;2.37;2.61;2.37;2.62;2.54;2.84;2.57;2.44;4.33;2.57;2.59;2.67;2.58;2.48;2.38;2.39;2.50;2.39;2.50;2.57;2.52;2.55;2.47;2.69;2.41 + * 22;iconFade-open-DPI2.all.TART;2.45;2.64;2.39;2.60;2.57;2.60;2.61;2.59;3.14;2.55;2.54;2.66;2.57;2.48;2.47;2.46;2.55;2.45;2.51;2.61;2.54;2.58;2.50;2.54;2.40 + * 23;iconFade-open-DPI2.error.TART;3.64;4.67;4.31;5.79;6.43;3.64;4.82;8.68;5.78;4.38;3.80;3.98;4.64;653.63;4.63;3.76;4.23;5.01;5.48;4.99;3.48;5.10;5.02;6.14;5.58 + * 24;newtab-open-preload-no.half.TART;5.02;2.90;3.06;3.03;2.94;2.94;3.08;3.12;3.60;3.19;2.82;2.96;3.67;7.85;2.79;3.12;3.18;2.92;2.86;2.96;2.96;3.00;2.90;2.97;2.94 + * 25;newtab-open-preload-no.all.TART;7.11;4.66;5.03;4.68;4.50;4.58;4.76;4.76;5.67;4.96;4.36;4.51;5.21;11.16;4.38;4.69;4.77;4.45;4.45;4.70;4.51;4.61;4.54;4.69;4.60 + * 26;newtab-open-preload-no.error.TART;40.82;40.85;37.38;37.40;36.30;36.47;36.89;37.63;37.12;38.65;36.73;36.95;36.11;38.59;37.39;37.77;37.93;37.54;37.46;38.29;36.58;38.25;38.32;37.92;36.93 + * 27;newtab-open-preload-yes.half.TART;3.14;2.96;2.97;8.37;2.98;3.00;2.96;3.05;3.12;3.48;3.07;3.23;3.05;2.88;2.92;3.06;2.90;3.01;3.19;2.90;3.18;3.11;3.04;3.16;3.21 + * 28;newtab-open-preload-yes.all.TART;5.10;4.60;4.63;8.94;5.01;4.69;4.63;4.67;4.93;5.43;4.78;5.12;4.77;4.65;4.50;4.78;4.75;4.63;4.76;4.45;4.86;4.88;4.69;4.86;4.92 + * 29;newtab-open-preload-yes.error.TART;35.90;37.24;38.57;40.60;36.04;38.12;38.78;36.73;36.91;36.69;38.12;36.69;37.79;35.80;36.11;38.01;36.59;38.85;37.14;37.30;38.02;38.95;37.64;37.86;36.43 + tp5n: > + - contact: fx-perf@mozilla.com + - description: + | The tp5 is an updated web page test set to 100 pages from April 8th, 2011. Effort was made for the pages to no longer be splash screens/login pages/home pages but to be pages that better reflect the actual content of the site in question. + tp5: > + - description: + | Note that the tp5 test no longer exists (only talos-tp5o) though many + tests still make use of this pageset. Here, we provide an overview of + the tp5 pageset and some information about how data using the tp5 + pageset might be used in various suites. + tp5o: > + - contact: :davehunt, and perftest team + - source: `tp5n.zip <#page-sets>`__ + - type: `Page load`_ + - data: we load each of the 51 tp5o pages 25 times, resulting in 51 sets of 25 data points. + - **To run it locally**, you'd need `tp5n.zip <#page-sets>`__. + - summarization: tp5 with limited pageset (48 pages as others have too much noise) + * subtest: `ignore first`_ **5** data points, then take the `median`_ of the remaining 20; `source: + test.py `__ + * suite: `geometric mean`_ of the 51 subtest results. + - description: + | Tests the time it takes Firefox to load the `tp5 web page test + set <#page-sets>`__. The web set was culled from the Alexa top 500 April + 8th, 2011 and consists of 100 pages in tp5n and 51 in tp5o. Some suites + use a subset of these, i.e. 48/51 tests to reduce noise - check with the + owner of the test suite which uses the pageset to check if this + difference exists there. + + Here are the broad steps we use to create the test set: + + #. Take the Alexa top 500 sites list + #. Remove all sites with questionable or explicit content + #. Remove duplicate site (for ex. many Google search front pages) + #. Manually select to keep interesting pages (such as pages in different locales) + #. Select a more representative page from any site presenting a simple search/login/etc. page + #. Deal with Windows 255 char limit for cached pages + #. Limit test set to top 100 pages + + Note that the above steps did not eliminate all outside network access + so we had to take further action to scrub all the pages so that there + are 0 outside network accesses (this is done so that the tp test is as + deterministic measurement of our rendering/layout/paint process as + possible). + - **Example Data** + * 0;163.com/www.163.com/index.html;1035;512;542;519;505;514;551;513;554;793;487;528;528;498;503;530;527;490;521;535;521;496;498;564;520 + * 1;56.com/www.56.com/index.html;1081;583;580;577;597;580;623;558;572;592;598;580;564;583;596;600;579;580;566;573;566;581;571;600;586 + * 2;aljazeera.net/aljazeera.net/portal.html;688;347;401;382;346;362;347;372;337;345;365;337;380;338;355;360;356;366;367;352;350;366;346;375;382 + * 3;amazon.com/www.amazon.com/Kindle-Wireless-Reader-Wifi-Graphite/dp/B002Y27P3M/507846.html;1392;878;901;852;886;867;877;864;862;877;866;888;3308;870;863;869;873;850;851;850;857;873;869;860;855 + * 4;bbc.co.uk/www.bbc.co.uk/news/index.html;455;271;272;271;279;289;276;285;277;291;281;286;278;286;274;285;276;285;287;286;276;288;279;272;278 + * 5;beatonna.livejournal.com/beatonna.livejournal.com/index.html;290;123;123;129;120;121;124;125;119;125;120;150;121;147;121;121;113;121;119;122;117;112;127;117;139 + * 6;bild.de/www.bild.de/index.html;1314;937;946;931;922;918;920;937;934;930;947;928;936;933;933;928;930;941;951;946;947;938;925;939;938 + * 7;cgi.ebay.com/cgi.ebay.com/ALL-NEW-KINDLE-3-eBOOK-WIRELESS-READING-DEVICE-W-WIFI-/130496077314@pt=LH_DefaultDomain_0&hash=item1e622c1e02.html;495;324;330;328;321;308;315;308;321;313;327;330;317;339;333;322;312;370;336;327;310;312;312;355;330 + * 8;chemistry.about.com/chemistry.about.com/index.html;238;156;156;154;158;161;152;151;152;167;179;152;154;156;161;161;157;167;151;167;154;149;178;153;160 + * 9;chinaz.com/chinaz.com/index.html;347;223;255;234;245;233;264;234;244;228;260;224;258;223;280;220;243;225;251;226;258;232;258;232;247 + * 10;cnn.com/www.cnn.com/index.html;551;384;436;394;391;375;371;407;371;374;398;372;368;388;376;380;386;377;363;383;384;370;388;381;374 + * 11;dailymail.co.uk/www.dailymail.co.uk/ushome/index.html;984;606;551;561;545;542;576;564;543;560;566;557;561;544;545;576;548;539;568;567;557;560;545;544;578 + * 12;dailymotion.com/www.dailymotion.com/us.html;473;271;286;272;285;288;290;290;280;268;286;269;287;275;289;282;293;287;304;261;289;284;281;277;286 + * 13;digg.com/digg.com/news/story/New_logo_for_Mozilla_Firefox_browser.html;410;321;304;303;322;300;319;321;320;306;323;313;312;305;312;338;317;338;301;325;297;302;309;305;300 + * 14;ezinearticles.com/ezinearticles.com/index.html@Migraine-Ocular---The-Eye-Migraines&id=4684133.html;234;177;163;163;186;176;185;175;167;156;162;199;163;190;173;181;175;178;165;159;182;170;183;169;158 + * 15;globo.com/www.globo.com/index.html;684;468;466;485;482;445;433;467;467;450;487;466;440;484;444;451;511;443;429;469;468;430;485;459;447 + * 16;google.com/www.google.com/search@q=mozilla.html;150;100;102;101;97;104;99;116;107;100;98;137;102;102;99;106;98;112;100;102;105;104;107;96;100 + * 17;goo.ne.jp/goo.ne.jp/index.html;328;125;132;132;143;121;122;120;132;145;166;139;144;125;128;152;128;145;130;132;154;126;142;133;139 + * 18;guardian.co.uk/www.guardian.co.uk/index.html;462;311;296;322;309;305;303;288;301;308;301;304;319;309;295;305;294;308;304;322;310;314;302;303;292 + * 19;homeway.com.cn/www.hexun.com/index.html;584;456;396;357;417;374;376;406;363;392;400;378;378;402;390;373;398;393;366;385;383;361;418;386;351 + * 20;huffingtonpost.com/www.huffingtonpost.com/index.html;811;609;575;596;568;585;589;571;568;600;571;588;585;570;574;616;576;564;598;594;589;590;572;572;612 + * 21;ifeng.com/ifeng.com/index.html;829;438;478;462;448;465;469;470;429;463;465;432;482;444;476;453;460;476;461;484;467;510;447;477;443 + * 22;imdb.com/www.imdb.com/title/tt1099212/index.html;476;337;358;332;414;379;344;420;354;363;387;345;358;371;341;385;359;379;353;349;392;349;358;378;347 + * 23;imgur.com/imgur.com/gallery/index.html;419;205;224;231;207;222;206;231;204;219;209;210;210;208;202;215;203;210;203;212;218;219;202;224;230 + * 24;indiatimes.com/www.indiatimes.com/index.html;530;339;348;384;376;381;353;350;403;333;356;393;350;328;393;329;389;346;394;349;382;332;409;327;354 + * 25;mail.ru/mail.ru/index.html;500;256;308;251;271;270;270;246;273;252;279;249;301;252;251;256;271;246;267;254;265;248;277;247;275 + * 26;mashable.com/mashable.com/index.html;699;497;439;508;440;448;512;446;431;500;445;427;495;455;458;499;440;432;522;443;447;488;445;461;489 + * 27;media.photobucket.com/media.photobucket.com/image/funny%20gif/findstuff22/Best%20Images/Funny/funny-gif1.jpg@o=1.html;294;203;195;189;213;186;195;186;204;188;190;220;204;202;195;204;192;204;191;187;204;199;191;192;211 + * 28;myspace.com/www.myspace.com/albumart.html;595;446;455;420;433;425;416;429;452;411;435;439;389;434;418;402;422;426;396;438;423;391;434;438;395 + * 29;naver.com/www.naver.com/index.html;626;368;338;386;342;377;371;352;379;348;362;357;359;354;386;338;394;330;326;372;345;392;336;336;368 + * 30;noimpactman.typepad.com/noimpactman.typepad.com/index.html;431;333;288;292;285;313;277;289;282;292;276;293;270;294;289;281;275;302;285;290;280;285;278;284;283 + * 31;page.renren.com/page.renren.com/index.html;373;232;228;228;213;227;224;227;226;216;234;226;230;212;213;221;224;230;212;218;217;221;212;222;230 + * 32;people.com.cn/people.com.cn/index.html;579;318;305;339;307;341;325;326;307;309;315;314;318;317;321;309;307;299;312;313;305;326;318;384;310 + * 33;rakuten.co.jp/www.rakuten.co.jp/index.html;717;385;371;388;381;348;394;358;396;368;343;386;348;388;393;388;360;339;398;357;392;378;395;386;367 + * 34;reddit.com/www.reddit.com/index.html;340;254;248;255;241;241;248;275;251;250;250;252;243;274;240;269;254;249;242;257;271;253;243;278;252 + * 35;reuters.com/www.reuters.com/index.html;513;404;355;358;379;343;354;385;379;354;418;363;342;412;355;351;402;375;354;400;362;355;380;373;336 + * 36;slideshare.net/www.slideshare.net/jameswillamor/lolcats-in-popular-culture-a-historical-perspective.html;397;279;270;283;285;283;291;286;289;284;275;281;288;284;280;279;290;301;290;270;292;282;289;267;278 + * 37;sohu.com/www.sohu.com/index.html;727;414;479;414;431;485;418;440;488;431;432;464;442;407;488;435;416;465;445;414;480;416;403;463;429 + * 38;spiegel.de/www.spiegel.de/index.html;543;430;391;380;440;387;375;430;380;397;415;383;434;420;384;399;421;392;384;418;388;380;427;403;392 + * 39;stackoverflow.com/stackoverflow.com/questions/184618/what-is-the-best-comment-in-source-code-you-have-ever-encountered.html;503;377;356;438;370;388;409;367;366;407;375;363;393;360;363;396;376;391;426;363;378;408;400;359;408 + * 40;store.apple.com/store.apple.com/us@mco=Nzc1MjMwNA.html;488;327;344;343;333;329;328;348;361;342;362;332;389;333;382;331;382;343;405;343;326;325;329;323;340 + * 41;thepiratebay.org/thepiratebay.org/top/201.html;412;274;317;260;256;269;266;261;258;289;245;284;256;277;251;302;276;307;268;268;247;285;260;271;257 + * 42;tudou.com/www.tudou.com/index.html;522;304;281;283;287;285;288;307;279;288;282;303;292;288;290;287;311;271;279;274;294;272;290;269;290 + * 43;uol.com.br/www.uol.com.br/index.html;668;387;450;411;395;452;386;431;452;394;385;436;413;414;440;401;412;439;408;430;426;415;382;433;387 + * 44;w3.org/www.w3.org/standards/webdesign/htmlcss.html;225;143;129;151;181;141;147;137;159;179;142;153;136;139;191;140;151;143;141;181;140;154;142;143;183 + * 45;wsj.com/online.wsj.com/home-page.html;634;466;512;463;467;507;461;432;492;494;491;507;466;477;495;455;451;495;461;463;494;468;444;497;442 + * 46;xinhuanet.com/xinhuanet.com/index.html;991;663;727;659;647;639;644;656;666;658;670;648;676;653;652;654;641;636;664;668;655;657;646;674;633 + * 47;xunlei.com/xunlei.com/index.html;802;625;624;636;641;652;659;642;623;635;628;606;667;688;683;694;672;640;628;620;653;626;633;654;643 + * 48;yelp.com/www.yelp.com/biz/alexanders-steakhouse-cupertino.html;752;475;502;472;477;512;489;478;501;472;454;517;487;474;521;467;450;513;491;464;536;507;455;511;481 + * 49;youku.com/www.youku.com/index.html;844;448;498;441;417;497;478;439;467;436;447;465;438;461;466;446;452;496;457;446;486;449;467;499;442 + * 50;youtube.com/www.youtube.com/music.html;443;338;253;289;238;296;254;290;242;302;237;290;253;305;253;293;251;311;244;293;255;291;246;316;249 + tp5o_scroll: > + - contact: :botond, :tnikkel, :hiro, and layout team + - source: `tp5n.zip <#page-sets>`__ + - type: `Page load`_ + - data: we load each of the 51 tp5o pages 12 times, resulting in 51 sets of 12 data points. + - **To run it locally**, you'd need `tp5n.zip <#page-sets>`__. + - summarization: Measures average frames interval while scrolling the pages of the tp5o set + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 11; `source: + test.py `__ + * suite: `geometric mean`_ of the 51 subtest results. + - description: + | This test is identical to tscrollx, but it scrolls the 50 pages of the + tp5o set (rather than 6 synthetic pages which tscrollx scrolls). There + are two variants for each test page. The "regular" variant waits 500ms + after the page load event fires, then iterates 100 scroll steps of 10px + each (or until the bottom of the page is reached - whichever comes + first), then reports the average frame interval. The "CSSOM" variant is + similar, but uses APZ's smooth scrolling mechanism to do compositor + scrolling instead of main-thread scrolling. So it just requests the + final scroll destination and the compositor handles the scrolling and + reports frame intervals. + - **Example Data** + * 0;163.com/www.163.com/index.html;9.73;8.61;7.37;8.17;7.58;7.29;6.88;7.45;6.91;6.61;8.47;7.12 + * 1;56.com/www.56.com/index.html;10.85;10.24;10.75;10.30;10.23;10.10;10.31;10.06;11.10;10.06;9.56;10.30 + * 2;aljazeera.net/aljazeera.net/portal.html;9.23;7.15;7.50;7.26;7.73;7.05;7.14;7.66;7.23;7.93;7.26;7.18 + * 3;amazon.com/www.amazon.com/Kindle-Wireless-Reader-Wifi-Graphite/dp/B002Y27P3M/507846.html;7.14;6.87;7.18;6.31;6.93;6.71;6.37;7.00;6.59;5.37;7.31;6.13 + * 4;bbc.co.uk/www.bbc.co.uk/news/index.html;7.39;6.33;6.22;7.66;6.67;7.77;6.91;7.74;7.08;6.36;6.03;7.12 + * 5;beatonna.livejournal.com/beatonna.livejournal.com/index.html;5.79;5.79;5.68;5.46;5.55;5.48;5.69;5.83;5.88;5.97;5.93;5.88 + * 6;bild.de/www.bild.de/index.html;8.65;7.63;7.17;6.36;7.44;7.68;8.63;6.71;8.34;7.15;7.82;7.70 + * 7;cgi.ebay.com/cgi.ebay.com/ALL-NEW-KINDLE-3-eBOOK-WIRELESS-READING-DEVICE-W-WIFI-/130496077314@pt=LH_DefaultDomain_0&hash=item1e622c1e02.html;7.12;6.81;7.22;6.98;7.05;5.68;7.15;6.54;7.31;7.18;7.82;7.77 + * 8;chemistry.about.com/chemistry.about.com/index.html;6.76;6.17;6.41;6.88;5.67;5.47;6.83;6.28;6.16;6.81;6.21;6.75 + * 9;chinaz.com/chinaz.com/index.html;10.72;7.99;7.33;7.10;7.85;8.62;8.39;6.72;6.26;6.65;8.14;7.78 + * 10;cnn.com/www.cnn.com/index.html;7.73;6.80;6.08;8.27;9.24;7.81;7.69;7.05;8.17;7.70;7.90;6.81 + * 11;dailymail.co.uk/www.dailymail.co.uk/ushome/index.html;6.37;8.28;7.19;8.00;8.09;7.43;6.90;7.24;7.77;7.29;7.38;6.14 + * 12;dailymotion.com/www.dailymotion.com/us.html;9.53;9.80;9.29;9.03;9.10;8.64;8.62;8.71;8.77;9.81;9.64;8.96 + * 13;digg.com/digg.com/news/story/New_logo_for_Mozilla_Firefox_browser.html;7.72;7.06;7.60;5.67;6.85;7.32;7.80;5.98;8.27;6.68;7.52;8.39 + * 14;ezinearticles.com/ezinearticles.com/index.html@Migraine-Ocular---The-Eye-Migraines&id=4684133.html;7.14;7.11;8.09;7.17;6.87;7.12;7.65;7.74;7.26;7.36;6.91;6.95 + * 15;globo.com/www.globo.com/index.html;6.71;7.91;5.83;7.34;7.75;8.00;7.73;7.85;7.03;6.42;8.43;8.11 + * 16;google.com/www.google.com/search@q=mozilla.html;6.49;6.23;7.96;6.39;7.23;8.19;7.35;7.39;6.94;7.24;7.55;7.62 + * 17;goo.ne.jp/goo.ne.jp/index.html;8.56;7.18;7.15;7.03;6.85;7.62;7.66;6.99;7.84;7.51;7.23;7.18 + * 18;guardian.co.uk/www.guardian.co.uk/index.html;7.32;7.62;8.18;7.62;7.83;8.08;7.60;8.17;8.47;7.54;7.92;8.09 + * 19;homeway.com.cn/www.hexun.com/index.html;10.18;8.75;8.83;8.64;8.98;8.07;7.76;9.29;8.05;7.55;8.91;7.78 + * 20;huffingtonpost.com/www.huffingtonpost.com/index.html;8.38;7.17;7.03;6.83;6.49;6.47;6.69;7.08;6.81;7.29;7.13;7.70 + * 21;ifeng.com/ifeng.com/index.html;12.45;8.65;8.75;7.56;8.26;7.71;8.04;7.45;7.83;7.14;8.38;7.68 + * 22;imdb.com/www.imdb.com/title/tt1099212/index.html;8.53;5.65;6.94;7.18;6.10;7.57;6.26;8.34;8.16;7.29;7.62;8.51 + * 23;imgur.com/imgur.com/gallery/index.html;8.10;7.20;7.50;7.88;7.27;6.97;8.13;7.14;7.59;7.39;8.01;8.82 + * 24;indiatimes.com/www.indiatimes.com/index.html;8.00;6.74;7.37;8.52;7.03;8.45;7.08;8.47;9.26;7.89;7.17;6.74 + * 25;mail.ru/mail.ru/index.html;7.64;9.50;9.47;7.03;6.45;6.24;8.03;6.72;7.18;6.39;6.25;6.25 + * 26;mashable.com/mashable.com/index.html;7.97;8.03;6.10;7.80;7.91;7.26;7.49;7.45;7.60;7.08;7.63;7.36 + * 27;media.photobucket.com/media.photobucket.com/image/funny%20gif/findstuff22/Best%20Images/Funny/funny-gif1.jpg@o=1.html;290.00;195.00;217.00;199.00;204.00;196.00;198.00;206.00;209.00;208.00;192.00;196.00 + * 28;myspace.com/www.myspace.com/albumart.html;14.40;13.45;13.29;13.62;13.42;14.15;13.86;14.34;14.69;14.10;13.82;14.13 + * 29;naver.com/www.naver.com/index.html;9.15;8.31;9.40;9.89;7.29;8.43;8.87;8.77;8.96;8.24;8.16;8.21 + * 30;noimpactman.typepad.com/noimpactman.typepad.com/index.html;7.27;7.14;7.70;7.86;7.43;6.95;7.30;7.58;7.51;7.95;7.43;7.05 + * 31;page.renren.com/page.renren.com/index.html;7.94;8.13;6.76;7.77;6.93;6.60;7.62;7.61;6.88;7.56;7.55;7.48 + * 32;people.com.cn/people.com.cn/index.html;11.92;9.22;8.49;8.55;8.34;8.49;6.91;9.92;8.69;8.63;7.69;9.34 + * 33;rakuten.co.jp/www.rakuten.co.jp/index.html;11.10;7.13;8.68;7.85;8.37;7.91;6.74;8.27;8.55;8.93;7.15;9.02 + * 34;reddit.com/www.reddit.com/index.html;6.38;7.95;6.84;7.04;6.96;7.15;8.05;7.71;8.13;7.13;6.60;7.53 + * 35;reuters.com/www.reuters.com/index.html;7.51;7.25;6.60;6.98;7.41;6.45;7.61;7.46;6.11;7.15;7.05;6.94 + * 36;slideshare.net/www.slideshare.net/jameswillamor/lolcats-in-popular-culture-a-historical-perspective.html;7.20;6.32;6.80;6.87;6.29;6.45;7.18;6.92;6.57;7.41;7.08;6.51 + * 37;sohu.com/www.sohu.com/index.html;11.72;9.64;8.85;7.12;7.96;9.14;7.76;8.19;7.14;7.68;8.08;7.24 + * 38;spiegel.de/www.spiegel.de/index.html;7.24;7.30;6.64;7.01;6.74;6.70;6.36;6.84;7.86;7.08;7.12;7.40 + * 39;stackoverflow.com/stackoverflow.com/questions/184618/what-is-the-best-comment-in-source-code-you-have-ever-encountered.html;7.39;5.88;7.22;6.51;7.12;6.51;6.46;6.53;6.63;6.54;6.48;6.80 + * 40;store.apple.com/store.apple.com/us@mco=Nzc1MjMwNA.html;6.23;7.17;7.39;8.98;7.99;8.03;9.12;8.37;8.56;7.61;8.06;7.55 + * 41;thepiratebay.org/thepiratebay.org/top/201.html;9.08;8.93;8.09;7.49;7.30;7.80;7.54;7.65;7.91;7.53;8.37;8.04 + * 42;tudou.com/www.tudou.com/index.html;10.06;9.38;8.68;7.37;8.57;9.11;8.20;7.91;8.78;9.64;8.11;8.47 + * 43;uol.com.br/www.uol.com.br/index.html;9.04;9.49;9.48;9.31;8.68;8.41;9.16;8.91;9.49;8.37;9.77;8.73 + * 44;w3.org/www.w3.org/standards/webdesign/htmlcss.html;6.62;5.98;6.87;6.47;7.22;6.05;6.42;6.50;7.47;7.18;5.82;7.11 + * 45;wsj.com/online.wsj.com/home-page.html;7.49;8.57;6.84;8.12;7.60;7.24;8.16;8.22;6.81;8.28;8.11;8.58 + * 46;xinhuanet.com/xinhuanet.com/index.html;13.66;9.21;10.09;9.56;8.99;10.29;10.24;8.91;11.23;10.82;9.64;10.11 + * 47;xunlei.com/xunlei.com/index.html;8.99;8.16;8.82;8.37;7.01;8.48;7.98;8.69;8.10;8.10;7.10;6.41 + * 48;yelp.com/www.yelp.com/biz/alexanders-steakhouse-cupertino.html;8.18;7.45;7.01;8.14;7.12;7.82;8.24;7.13;7.00;6.41;6.85;7.31 + * 49;youku.com/www.youku.com/index.html;12.21;10.29;10.37;10.34;8.40;9.82;9.23;9.91;9.64;9.91;8.90;10.23 + * 50;youtube.com/www.youtube.com/music.html;9.90;9.06;9.29;9.17;8.85;8.77;9.83;9.21;9.29;10.09;9.69;8.64 + - **Possible regression causes**: Some examples of things that cause regressions in this test are + * Increased displayport size (which causes a larger display list to be built) + * Slowdown in the building of display list + * Slowdown in rasterization of content + * Slowdown in composite times + tp5o_webext: > + - contact: :mixedpuppy and webextension team + tresize: > + - contact: :gcp and platform integration + - source: `tresize-test.html `__ + - type: Startup_ + - measuring: Time to do XUL resize, in ms (lower is better). + - data: we run the tresize test page 20 times, resulting in 1 set of 20 data points. + - summarization: + * subtest: `ignore first`_ **5** data points, then take the `median`_ of the remaining 15 data points; `source: + test.py `__ + * suite: same as subtest result + - description: + | A purer form of paint measurement than tpaint. This test opens a single + window positioned at 10,10 and sized to 300,300, then resizes the window + outward \|max\| times measuring the amount of time it takes to repaint + each resize. Dumps the resulting dataset and average to stdout or + logfile. + + In `bug + 1102479 `__ + tresize was rewritten to work in e10s mode which involved a full rewrite + of the test. + - **Example Data** + * [23.2565333333333, 23.763383333333362, 22.58369999999999, 22.802766666666653, 22.304050000000025, 23.010383333333326, 22.865466666666677, 24.233716666666705, 24.110983333333365, 22.21390000000004, 23.910333333333316, 23.409816666666647, 19.873049999999992, 21.103966666666686, 20.389749999999978, 20.777349999999984, 20.326283333333365, 22.341616666666667, 20.29813333333336, 20.769600000000104] + - **Possible regression causes** + * slowdown in the paint pipeline + * resizes also trigger a rendering flush so bugs in the flushing code can manifest as regressions + * introduction of more spurious MozAfterPaint events - see `bug 1471961 `__ + ts_paint: > + - contact: :mconley, Firefox Desktop Front-end team, + - source: `tspaint_test.html `__ + - Perfomatic: "Ts, Paint" + - type: Startup_ + - data: 20 times we start the browser and time how long it takes to + paint the startup test page, resulting in 1 set of 20 data points. + - summarization: + * subtest: identical to suite + * suite: `ignore first`_ data point, then take the `median`_ of the remaining 19 data points; `source: + test.py `__ + - description: + | Starts the browser to display tspaint_test.html with the start time in + the url, waits for `MozAfterPaint and onLoad <#paint>`__ to fire, then + records the end time and calculates the time to startup. + - **Example Data** + * [1666.0, 1195.0, 1139.0, 1198.0, 1248.0, 1224.0, 1213.0, 1194.0, 1229.0, 1196.0, 1191.0, 1230.0, 1247.0, 1169.0, 1217.0, 1184.0, 1196.0, 1192.0, 1224.0, 1192.0] + - **Possible regression causes** + * (and/or maybe tpaint?) will regress if a new element is added to the + browser window (e.g. browser.xul) and it's frame gets created. Fix + this by ensuring it's display:none by default. + ts_paint_heavy: > + - `ts_paint <#ts_paint>`_ test run against a heavy user profile. + - contact: :mconley, Firefox Desktop Front-end team, + ts_paint_webext: > + - contact: :mconley, Firefox Desktop Front-end team, + tscrollx: > + - contact: :jrmuizel and gfx + - source: `scroll.manifest `__ + - type: `Page load`_ + - measuring: Scroll performance + - reporting: Average frame interval (1 ÷ fps). Lower is better. + - data: we load 6 pages 25 times each, collecting 6 sets of 25 data points + - summarization: `Replacing tscroll,tsvg with tscrollx,tsvgx `__ + * subtest: `ignore first`_ data point, then take the `median`_ of the remaining 24; `source: + test.py `__ + * suite: `geometric mean`_ of the 6 subtest results. + - description: + | This test scrolls several pages where each represent a different known + "hard" case to scroll (\* needinfo), and measures the average frames + interval (1/FPS) on each. The ASAP test (tscrollx) iterates in unlimited + frame-rate mode thus reflecting the maximum scroll throughput per page. + To turn on ASAP mode, we set these preferences: + + ``preferences = {'layout.frame_rate': 0, 'docshell.event_starvation_delay_hint': 1}`` + + See also `tp5o_scroll <#tp5o_scroll>`_ which has relevant information for this test. + - **Example Data** + * 0;tiled.html;5.41;5.57;5.34;5.64;5.53;5.48;5.44;5.49;5.50;5.50;5.49;5.66;5.50;5.37;5.57;5.54;5.46;5.31;5.41;5.57;5.50;5.52;5.71;5.31;5.44 + * fixed.html;10.404609053497941;10.47;10.66;10.45;10.73;10.79;10.64;10.64;10.82;10.43;10.92;10.47;10.47;10.64;10.74;10.67;10.40;10.83;10.77;10.54;10.38;10.70;10.44;10.38;10.56 + * downscale.html;5.493209876543211;5.27;5.50;5.50;5.51;5.46;5.58;5.58;5.51;5.49;5.49;5.47;9.09;5.56;5.61;5.50;5.47;5.59;5.47;5.49;5.60;5.61;5.58;5.40;5.43 + * downscale.html;10.676522633744854;10.82;10.79;10.41;10.75;10.91;10.52;10.61;10.50;10.55;10.80;10.17;10.68;10.41;10.42;10.41;10.58;10.28;10.56;10.66;10.68;10.47;10.60;10.61;10.26 + * 4;iframe.svg;13.82;14.87;14.78;14.35;14.73;14.50;14.15;14.46;14.80;14.48;15.10;14.93;14.77;14.52;14.08;15.01;14.58;14.52;15.23;14.35;14.72;14.28;14.30;14.27;14.96 + * 5;reader.htm;10.72;10.62;10.23;10.48;10.42;10.64;10.40;10.40;10.14;10.60;10.51;10.36;10.57;10.41;10.52;10.75;10.19;10.72;10.44;9.75;10.49;10.07;10.54;10.46;10.44 + tsvg_static: > + - contact: :jwatt, :dholbert + - source: `svg_static `__ + - type: `Page load`_ + - data: we load the 5 svg pages 25 times, resulting in 5 sets of 25 data points + - summarization: An svg-only number that measures SVG rendering performance of some complex (but static) SVG content. + * subtest: `ignore first`_ **5** data points, then take the `median`_ of the remaining 20; `source: + test.py `__ + * suite: `geometric mean`_ of the 5 subtest results. + - **Example Data** + * 0;gearflowers.svg;262;184;184;198;197;187;181;186;177;192;196;194;194;186;195;190;237;193;188;182;188;196;191;194;184 + * 1;composite-scale.svg;69;52;48;49;57;51;52;87;52;49;49;51;58;53;64;57;49;65;67;58;53;59;56;68;50 + * 2;composite-scale-opacity.svg;72;53;91;54;51;58;60;46;51;57;59;58;66;70;57;61;47;51;76;65;52;65;64;64;63 + * 3;composite-scale-rotate.svg;70;76;89;62;62;78;57;77;79;82;74;56;61;79;73;64;75;74;81;82;76;58;77;61;62 + * 4;composite-scale-rotate-opacity.svg;91;60;67;84;62;66;78;69;65;68;62;73;68;63;64;71;79;77;63;80;85;65;82;76;81 + tsvgm: > + - An svg-only number that measures SVG rendering performance for dynamic content only. + - contact: :jwatt, :dholbert + - add test details + tsvgr_opacity: > + - contact: :jwatt, :dholbert + - source: `svg_opacity.manifest `__ + - type: `Page load`_ + - data: we load the 2 svg opacity pages 25 times, resulting in 2 sets of 25 data points + - summarization: `Row Major <#row-major-vs-column-major>`__ and 25 cycles/page. + * subtest: `ignore first`_ **5** data points, then take the `median`_ of the remaining 20; `source: + test.py `__ + * suite: `geometric mean`_ of the 2 subtest results. + - description: + | Renders many semi-transparent, partially overlapping SVG rectangles, and + measures time to completion of this rendering. + + Note that this test also tends to reflect changes in network efficiency + and navigation bar rendering issues. + - Most of the page load tests measure from before the location is + changed, until onload + mozafterpaint, therefore any changes in + chrome performance from the location change, or network performance + (the pages load from a local web server) would affect page load + times. SVG opacity is rather quick by itself, so any such + chrome/network/etc performance changes would affect this test more + than other page load tests (relatively, in percentages). + - **Example Data** + * 0;big-optimizable-group-opacity-2500.svg;170;171;205;249;249;244;192;252;192;431;182;250;189;249;151;168;209;194;247;250;193;250;255;247;247 + * 1;small-group-opacity-2500.svg;585;436;387;441;512;438;440;380;443;391;450;386;459;383;445;388;450;436;485;443;383;438;528;444;441 + tsvgx: > + - contact: :jwatt, :dholbert + - source: `svgx `__ + - type: `Page load`_ + - data: we load the 7 svg pages 25 times, resulting in 7 sets of 25 data points + - summarization: `Replacing tscroll,tsvg with tscrollx,tsvgx `__ + * subtest: `ignore first`_ **5** data points, then take the `median`_ of the remaining 20; `source: + test.py `__ + * suite: `geometric mean`_ of the 7 subtest results. + - description: + | An svg-only number that measures SVG rendering performance, with + animations or iterations of rendering. This is an ASAP test --i.e. it + iterates in unlimited frame-rate mode thus reflecting the maximum + rendering throughput of each test. The reported value is the overall + duration the sequence/animation took to complete. To turn on ASAP mode, + we set these preferences: + + ``preferences = {'layout.frame_rate': 0, 'docshell.event_starvation_delay_hint': 1}`` + - **Example Data** + * 0;hixie-001.xml;562;555;508;521;522;520;499;510;492;514;502;504;500;521;510;506;511;505;495;517;520;512;503;504;502 + * 1;hixie-002.xml;510;613;536;530;536;522;498;505;500;504;498;529;498;509;493;512;501;506;504;499;496;505;508;511;503 + * 2;hixie-003.xml;339;248;242;261;250;241;240;248;258;244;235;240;247;248;239;247;241;245;242;245;251;239;241;240;237 + * 3;hixie-004.xml;709;540;538;536;540;536;552;539;535;535;543;533;536;535;545;537;537;537;537;539;538;535;536;538;536 + * 4;hixie-005.xml;3096;3086;3003;3809;3213;3323;3143;3313;3192;3203;3225;3048;3069;3101;3189;3251;3172;3122;3266;3183;3159;3076;3014;3237;3100 + * 5;hixie-006.xml;5586;5668;5565;5666;5668;5728;5886;5534;5484;5607;5678;5577;5745;5753;5532;5585;5506;5516;5648;5778;5894;5994;5794;5852;5810 + * 6;hixie-007.xml;1823;1743;1739;1743;1744;1787;1802;1788;1782;1766;1787;1750;1748;1788;1766;1779;1767;1794;1758;1768;1781;1773;1765;1798;1805 + - **Possible regression causes** + * Did you change the dimensions of the content area? Even a little? The + tsvgx test seems to be sensitive to changes like this. See `bug + 1375479 `__, + for example. Usually, these sorts of "regressions" aren't real + regressions - they just mean that we need to re-baseline our + expectations from the test. + twinopen: > + - contact: :gcp and platform integration + - source: `twinopen `__ + - type: Startup_ + - data: we open a new browser window 20 times, resulting in 1 set of 20 data points. + - summarization: Time from calling OpenBrowserWindow until the chrome of the new window has `painted `__. + * subtest: `ignore first`_ **5** data points, then take the `median`_ of the remaining 15; `source: + test.py `__ + * suite: identical to subtest + - description: + | Tests the amount of time it takes the open a new window from a currently + open browser. This test does not include startup time. Multiple test + windows are opened in succession, results reported are the average + amount of time required to create and display a window in the running + instance of the browser. (Measures ctrl-n performance.) + - **Example Data** + * [209.219, 222.180, 225.299, 225.970, 228.090, 229.450, 230.625, 236.315, 239.804, 242.795, 244.5, 244.770, 250.524, 251.785, 253.074, 255.349, 264.729, 266.014, 269.399, 326.190] + v8_7: > + - description: + | This is the V8 (version 7) javascript benchmark taken verbatim and slightly modified + to fit into our pageloader extension and talos harness. The previous version of this + test is V8 version 5 which was run on selective branches and operating systems. + - contact: No longer being maintained by any team/individual diff --git a/testing/talos/perfdocs/index.rst b/testing/talos/perfdocs/index.rst new file mode 100644 index 0000000000..e5e4ebe2a5 --- /dev/null +++ b/testing/talos/perfdocs/index.rst @@ -0,0 +1,728 @@ +===== +Talos +===== + +Talos is a cross-platform Python performance testing framework that is specifically for +Firefox on desktop. New performance tests should be added to the newer framework +`mozperftest `_ unless there are limitations +there (highly unlikely) that make it absolutely necessary to add them to Talos. Talos is +named after the `bronze automaton from Greek myth `_. + +.. contents:: + :depth: 1 + :local: + +Talos tests are run in a similar manner to xpcshell and mochitests. They are started via +the command :code:`mach talos-test`. A `python script `_ +then launches Firefox, which runs the tests via JavaScript special powers. The test timing +information is recorded in a text log file, e.g. :code:`browser_output.txt`, and then processed +into the `JSON format supported by Perfherder `_. + +Talos bugs can be filed in `Testing::Talos `_. + +Talos infrastructure is still mostly documented `on the Mozilla Wiki `_. +In addition, there are plans to surface all of the individual tests using PerfDocs. +This work is tracked in `Bug 1674220 `_. + +Examples of current Talos runs can be `found in Treeherder by searching for "Talos" `_. +If none are immediately available, then scroll to the bottom of the page and load more test +runs. The tests all share a group symbol starting with a :code:`T`, for example +:code:`T(c d damp g1)` or :code:`T-gli(webgl)`. + +Running Talos Locally +********************* + +Running tests locally is most likely only useful for debugging what is going on in a test, +as the test output is only reported as raw JSON. The CLI is documented via: + +.. code-block:: bash + + ./mach talos-test --help + +To quickly try out the :code:`./mach talos-test` command, the following can be run to do a +single run of the DevTools' simple netmonitor test. + +.. code-block:: bash + + # Run the "simple.netmonitor" test very quickly with 1 cycle, and 1 page cycle. + ./mach talos-test --activeTests damp --subtests simple.netmonitor --cycles 1 --tppagecycles 1 + + +The :code:`--print-suites` and :code:`--print-tests` are two helpful command flags to +figure out what suites and tests are available to run. + +.. code-block:: bash + + # Print out the suites: + ./mach talos-test --print-suites + + # Available suites: + # bcv (basic_compositor_video) + # chromez (about_preferences_basic:tresize) + # dromaeojs (dromaeo_css:kraken) + # ... + + # Run all of the tests in the "bcv" test suite: + ./mach talos-test --suite bcv + + # Print out the tests: + ./mach talos-test --print-tests + + # Available tests: + # ================ + # + # a11yr + # ----- + # This test ensures basic a11y tables and permutations do not cause + # performance regressions. + # + # ... + + # Run the tests in "a11yr" listed above + ./mach talos-test --activeTests a11yr + +Running Talos on Try +******************** + +Talos runs can be generated through the mach try fuzzy finder: + +.. code-block:: bash + + ./mach try fuzzy + +The following is an example output at the time of this writing. Refine the query for the +platform and test suites of your choosing. + +.. code-block:: + + | test-windows10-64-qr/opt-talos-bcv-swr-e10s + | test-linux64-shippable/opt-talos-webgl-e10s + | test-linux64-shippable/opt-talos-other-e10s + | test-linux64-shippable-qr/opt-talos-g5-e10s + | test-linux64-shippable-qr/opt-talos-g4-e10s + | test-linux64-shippable-qr/opt-talos-g3-e10s + | test-linux64-shippable-qr/opt-talos-g1-e10s + | test-windows10-64/opt-talos-webgl-gli-e10s + | test-linux64-shippable/opt-talos-tp5o-e10s + | test-linux64-shippable/opt-talos-svgr-e10s + | test-linux64-shippable/opt-talos-damp-e10s + > test-windows7-32/opt-talos-webgl-gli-e10s + | test-linux64-shippable/opt-talos-bcv-e10s + | test-linux64-shippable/opt-talos-g5-e10s + | test-linux64-shippable/opt-talos-g4-e10s + | test-linux64-shippable/opt-talos-g3-e10s + | test-linux64-shippable/opt-talos-g1-e10s + | test-linux64-qr/opt-talos-bcv-swr-e10s + + For more shortcuts, see mach help try fuzzy and man fzf + select: , accept: , cancel: , select-all: , cursor-up: , cursor-down: + 1379/2967 + > talos + +At a glance +*********** + +- Tests are defined in + `testing/talos/talos/test.py `__ +- Treeherder abbreviations are defined in + `taskcluster/ci/test/talos.yml `__ +- Suites are defined for production in + `testing/talos/talos.json `__ + +Test lifecycle +************** + +- Taskcluster schedules `talos + jobs `__ +- Taskcluster runs a Talos job on a hardware machine when one is + available - this is bootstrapped by + `mozharness `__ + + - mozharness downloads the build, talos.zip (found in + `talos.json `__), + and creates a virtualenv for running the test. + - mozharness `configures the test and runs + it `__ + - After the test is completed the data is uploaded to + `Perfherder `__ + +- Treeherder displays a green (all OK) status and has a link to + `Perfherder `__ +- 13 pushes later, + `analyze_talos.py `__ + is ran which compares your push to the previous 12 pushes and next 12 + pushes to look for a + `regression `__ + + - If a regression is found, it will be posted on `Perfherder + Alerts `__ + +Test types +********** + +There are two different species of Talos tests: + +- Startup_: Start up the browser and wait for either the load event or the paint event and exit, measuring the time +- `Page load`_: Load a manifest of pages + +In addition we have some variations on existing tests: + +- Heavy_: Run tests with the heavy user profile instead of a blank one +- WebExtension_: Run tests with a WebExtension to see the perf impact extension have +- `Real-world WebExtensions`_: Run tests with a set of 5 popular real-world WebExtensions installed and enabled. + +Some tests measure different things: + +- Paint_: These measure events from the browser like moz_after_paint, etc. +- ASAP_: These tests go really fast and typically measure how many frames we can render in a time window +- Benchmarks_: These are benchmarks that measure specific items and report a summarized score + +Startup +======= + +`Startup +tests `__ +launch Firefox and measure the time to the onload or paint events. We +run this in a series of cycles (default to 20) to generate a full set of +data. Tests that currently are startup tests are: + +- `ts_paint <#ts_paint>`_ +- tpaint_ +- `tresize <#tresize>`_ +- `sessionrestore <#sessionrestore>`_ +- `sessionrestore_no_auto_restore <#sessionrestore_no_auto_restore>`_ +- `sessionrestore_many_windows <#sessionrestore_many_windows>`_ + +Page load +========= + +Many of the talos tests use the page loader to load a manifest of pages. +These are tests that load a specific page and measure the time it takes +to load the page, scroll the page, draw the page etc. In order to run a +page load test, you need a manifest of pages to run. The manifest is +simply a list of URLs of pages to load, separated by carriage returns, +e.g.: + +.. code-block:: none + + https://www.mozilla.org + https://www.mozilla.com + +Example: +`svgx.manifest `__ + +Manifests may also specify that a test computes its own data by +prepending a ``%`` in front of the line: + +.. code-block:: none + + % https://www.mozilla.org + % https://www.mozilla.com + +Example: +`v8.manifest `__ + +The file you created should be referenced in your test config inside of +`test.py `__. +For example, open test.py, and look for the line referring to the test +you want to run: + +.. code-block:: python + + tpmanifest = '${talos}/page_load_test/svgx/svgx.manifest' + tpcycles = 1 # run a single cycle + tppagecycles = 25 # load each page 25 times before moving onto the next page + +Heavy +===== + +All our testing is done with empty blank profiles, this is not ideal for +finding issues for end users. We recently undertook a task to create a +daily update to a profile so it is modern and relevant. It browses a +variety of web pages, and have history and cache to give us a more +realistic scenario. + +The toolchain is documented on +`github `__ and was added +to Talos in `bug +1407398 `__. + +Currently we have issues with this on windows (takes too long to unpack +the files from the profile), so we have turned this off there. Our goal +is to run this on basic pageload and startup tests. + +WebExtension +============= + +WebExtensions are what Firefox has switched to and there are different +code paths and APIs used vs addons. Historically we don't test with +addons (other than our test addons) and are missing out on common +slowdowns. In 2017 we started running some startup and basic pageload +tests with a WebExtension in the profile (`bug +1398974 `__). We +have updated the Extension to be more real world and will continue to do +that. + +Real-world WebExtensions +======================== + +We've added a variation on our test suite that automatically downloads, +installs and enables 5 popular WebExtensions. This is used to measure +things like the impact of real-world WebExtensions on start-up time. + +Currently, the following extensions are installed: + +- Adblock Plus (3.5.2) +- Cisco Webex Extension (1.4.0) +- Easy Screenshot (3.67) +- NoScript (10.6.3) +- Video DownloadHelper (7.3.6) + +Note that these add-ons and versions are "pinned" by being held in a +compressed file that's hosted in an archive by our test infrastructure +and downloaded at test runtime. To update the add-ons in this set, one +must provide a new ZIP file to someone on the test automation team. See +`this comment in +Bugzilla `__. + +Paint +===== + +Paint tests are measuring the time to receive both the +`MozAfterPaint `__ +and OnLoad event instead of just the OnLoad event. Most tests now look +for this unless they are an ASAP test, or an internal benchmark + +ASAP +==== + +We have a variety of tests which we now run in ASAP mode where we render +as fast as possible (disabling vsync and letting the rendering iterate +as fast as it can using \`requestAnimationFrame`). In fact we have +replaced some original tests with the 'x' versions to make them measure. +We do this with RequestAnimationFrame(). + +ASAP tests are: + +- `basic_compositor_video <#basic_compositor_video>`_ +- `displaylist_mutate <#displaylist_mutate>`_ +- `glterrain <#glterrain>`_ +- `rasterflood_svg <#rasterflood_svg>`_ +- `rasterflood_gradient <#rasterflood_gradient>`_ +- `tsvgx <#tsvgx>`_ +- `tscrollx <#tscrollx>`_ +- `tp5o_scroll <#tp5o_scroll>`_ +- `tabswitch <#tabswitch>`_ +- `tart <#tart>`_ + +Benchmarks +========== + +Many tests have internal benchmarks which we report as accurately as +possible. These are the exceptions to the general rule of calculating +the suite score as a geometric mean of the subtest values (which are +median values of the raw data from the subtests). + +Tests which are imported benchmarks are: + +- `ARES6 <#ares6>`_ +- `dromaeo <#dromaeo>`_ +- `JetStream <#jetstream>`_ +- `kraken <#kraken>`_ +- `motionmark <#motionmark>`_ +- `stylebench <#stylebench>`_ + +Row major vs. column major +========================== + +To get more stable numbers, tests are run multiple times. There are two +ways that we do this: row major and column major. Row major means each +test is run multiple times and then we move to the next test (and run it +multiple times). Column major means that each test is run once one after +the other and then the whole sequence of tests is run again. + +More background information about these approaches can be found in Joel +Maher's `Reducing the Noise in +Talos `__ +blog post. + +Page sets +********* + +We run our tests 100% offline, but serve pages via a webserver. Knowing +this we need to store and make available the offline pages we use for +testing. + +tp5pages +======== + +Some tests make use of a set of 50 "real world" pages, known as the tp5n +set. These pages are not part of the talos repository, but without them +the tests which use them won't run. + +- To add these pages to your local setup, download the latest tp5n zip + from `tooltool `__, and extract + it such that ``tp5n`` ends up as ``testing/talos/talos/tests/tp5n``. + You can also obtain it by running a talos test locally to get the zip + into ``testing/talos/talos/tests/``, i.e ``./mach talos-test --suite damp`` +- see also `tp5o <#tp5o>`_. + +{documentation} + +Extra Talos Tests +***************** + +.. contents:: + :depth: 1 + :local: + +File IO +------- + +File IO is tested using the tp5 test set in the `xperf`_ +test. + +Possible regression causes +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- **nonmain_startup_fileio opt (with or without e10s) windows7-32** – + `bug + 1274018 `__ + This test seems to consistently report a higher result for + mozilla-central compared to Try even for an identical revision due to + extension signing checks. In other words, if you are comparing Try + and Mozilla-Central you may see a false-positive regression on + perfherder. Graphs: + `non-e10s `__ + `e10s `__ + +Xres (X Resource Monitoring) +---------------------------- + +A memory metric tracked during tp5 test runs. This metric is sampled +every 20 seconds. This metric is collected on linux only. + +`xres man page `__. + +% CPU +----- + +Cpu usage tracked during tp5 test runs. This metric is sampled every 20 +seconds. This metric is collected on windows only. + +Responsiveness +-------------- + +contact: :jimm, :overholt + +Measures the delay for the event loop to process a `tracer +event `__. +For more details, see `bug +631571 `__. + +The score on this benchmark is proportional to the sum of squares of all +event delays that exceed a 20ms threshold. Lower is better. + +We collect 8000+ data points from the browser during the test and apply +`this +formula `__ +to the results: + +.. code-block:: python + + return sum([float(x)*float(x) / 1000000.0 for x in val_list]) + +tpaint +====== + +.. warning:: + + This test no longer exists + +- contact: :davidb +- source: + `tpaint-window.html `__ +- type: Startup_ +- data: we load the tpaint test window 20 times, resulting in 1 set of + 20 data points. +- summarization: + + - subtest: `ignore first`_ **5** data points, then take the `median`_ of the remaining 15; `source: + test.py `__ + - suite: identical to subtest + ++-----------------+---------------------------------------------------+ +| Talos test name | Description | ++-----------------+---------------------------------------------------+ +| tpaint | twinopen but measuring the time after we receive | +| | the `MozAfterPaint and OnLoad event <#paint>`__. | ++-----------------+---------------------------------------------------+ + +Tests the amount of time it takes the open a new window. This test does +not include startup time. Multiple test windows are opened in +succession, results reported are the average amount of time required to +create and display a window in the running instance of the browser. +(Measures ctrl-n performance.) + +**Example Data** + +.. code-block:: none + + [209.219, 222.180, 225.299, 225.970, 228.090, 229.450, 230.625, 236.315, 239.804, 242.795, 244.5, 244.770, 250.524, 251.785, 253.074, 255.349, 264.729, 266.014, 269.399, 326.190] + +Possible regression causes +-------------------------- + +- None listed yet. If you fix a regression for this test and have some + tips to share, this is a good place for them. + +xperf +===== + +- contact: fx-perf@mozilla.com +- source: `xperf + instrumentation `__ +- type: `Page load`_ (tp5n) / Startup_ +- measuring: IO counters from windows (currently, only startup IO is in + scope) +- reporting: Summary of read/write counters for disk, network (lower is + better) + +These tests only run on windows builds. See `this active-data +query `__ +for an updated set of platforms that xperf can be found on. If the query +is not found, use the following on the query page: + +.. code-block:: javascript + + { + "from":"task", + "groupby":["run.name","build.platform"], + "limit":2000, + "where":{"regex":{"run.name":".*xperf.*"}} + } + +Talos will turn orange for 'x' jobs on windows 7 if your changeset +accesses files which are not predefined in the +`allowlist `__ +during startup; specifically, before the +"`sessionstore-windows-restored `__" +Firefox event. If your job turns orange, you will see a list of files in +Treeherder (or in the log file) which have been accessed unexpectedly +(similar to this): + +.. code-block:: none + + TEST-UNEXPECTED-FAIL : xperf: File '{profile}\secmod.db' was accessed and we were not expecting it. DiskReadCount: 6, DiskWriteCount: 0, DiskReadBytes: 16904, DiskWriteBytes: 0 + TEST-UNEXPECTED-FAIL : xperf: File '{profile}\cert8.db' was accessed and we were not expecting it. DiskReadCount: 4, DiskWriteCount: 0, DiskReadBytes: 33288, DiskWriteBytes: 0 + TEST-UNEXPECTED-FAIL : xperf: File 'c:\$logfile' was accessed and we were not expecting it. DiskReadCount: 0, DiskWriteCount: 2, DiskReadBytes: 0, DiskWriteBytes: 32768 + TEST-UNEXPECTED-FAIL : xperf: File '{profile}\secmod.db' was accessed and we were not expecting it. DiskReadCount: 6, DiskWriteCount: 0, DiskReadBytes: 16904, DiskWriteBytes: 0 + TEST-UNEXPECTED-FAIL : xperf: File '{profile}\cert8.db' was accessed and we were not expecting it. DiskReadCount: 4, DiskWriteCount: 0, DiskReadBytes: 33288, DiskWriteBytes: 0 + TEST-UNEXPECTED-FAIL : xperf: File 'c:\$logfile' was accessed and we were not expecting it. DiskReadCount: 0, DiskWriteCount: 2, DiskReadBytes: 0, DiskWriteBytes: 32768 + +In the case that these files are expected to be accessed during startup +by your changeset, then we can add them to the +`allowlist `__. + +Xperf runs tp5 while collecting xperf metrics for disk IO and network +IO. The providers we listen for are: + +- `'PROC_THREAD', 'LOADER', 'HARD_FAULTS', 'FILENAME', 'FILE_IO', + 'FILE_IO_INIT' `__ + +The values we collect during stackwalk are: + +- `'FileRead', 'FileWrite', + 'FileFlush' `__ + +Notes: + +- Currently some runs may `return all-zeros and skew the + results `__ +- Additionally, these runs don't have dedicated hardware and have a + large variability. At least 30 runs are likely to be needed to get + stable statistics (xref `bug + 1616236 `__) + +Build metrics +************* + +These are not part of the Talos code, but like Talos they are benchmarks +that record data using the graphserver and are analyzed by the same +scripts for regressions. + +Number of constructors (num_ctors) +================================== + +This test runs at build time and measures the number of static +initializers in the compiled code. Reducing this number is helpful for +`startup +optimizations `__. + +- https://hg.mozilla.org/build/tools/file/348853aee492/buildfarm/utils/count_ctors.py + + - these are run for linux 32+64 opt and pgo builds. + +Platform microbenchmark +*********************** + +IsASCII and IsUTF8 gtest microbenchmarks +======================================== + +- contact: :hsivonen +- source: + `TestStrings.cpp `__ +- type: Microbench_ +- reporting: intervals in ms (lower is better) +- data: each test is run and measured 5 times +- summarization: take the `median`_ of the 5 data points; `source: + MozGTestBench.cpp `__ + +Test whose name starts with PerfIsASCII test the performance of the +XPCOM string IsASCII function with ASCII inputs if different lengths. + +Test whose name starts with PerfIsUTF8 test the performance of the XPCOM +string IsUTF8 function with ASCII inputs if different lengths. + +Possible regression causes +-------------------------- + +- The --enable-rust-simd accidentally getting turned off in automation. +- Changes to encoding_rs internals. +- LLVM optimizations regressing between updates to the copy of LLVM + included in the Rust compiler. + +Microbench +========== + +- contact: :bholley +- source: + `MozGTestBench.cpp `__ +- type: Custom GTest micro-benchmarking +- data: Time taken for a GTest function to execute +- summarization: Not a Talos test. This suite is provides a way to add + low level platform performance regression tests for things that are + not suited to be tested by Talos. + +PerfStrip Tests +=============== + +- contact: :davidb +- source: + https://dxr.mozilla.org/mozilla-central/source/xpcom/tests/gtest/TestStrings.cpp +- type: Microbench_ +- reporting: execution time in ms (lower is better) for 100k function + calls +- data: each test run and measured 5 times +- summarization: + +PerfStripWhitespace - call StripWhitespace() on 5 different test cases +20k times (each) + +PerfStripCharsWhitespace - call StripChars("\f\t\r\n") on 5 different +test cases 20k times (each) + +PerfStripCRLF - call StripCRLF() on 5 different test cases 20k times +(each) + +PerfStripCharsCRLF() - call StripChars("\r\n") on 5 different test cases +20k times (each) + +Stylo gtest microbenchmarks +=========================== + +- contact: :bholley, :SimonSapin +- source: + `gtest `__ +- type: Microbench_ +- reporting: intervals in ms (lower is better) +- data: each test is run and measured 5 times +- summarization: take the `median`_ of the 5 data points; `source: + MozGTestBench.cpp `__ + +Servo_StyleSheet_FromUTF8Bytes_Bench parses a sample stylesheet 20 times +with Stylo’s CSS parser that is written in Rust. It starts from an +in-memory UTF-8 string, so that I/O or UTF-16-to-UTF-8 conversion is not +measured. + +Gecko_nsCSSParser_ParseSheet_Bench does the same with Gecko’s previous +CSS parser that is written in C++, for comparison. + +Servo_DeclarationBlock_SetPropertyById_Bench parses the string "10px" +with Stylo’s CSS parser and sets it as the value of a property in a +declaration block, a million times. This is similar to animations that +are based on JavaScript code modifying Element.style instead of using +CSS @keyframes. + +Servo_DeclarationBlock_SetPropertyById_WithInitialSpace_Bench is the +same, but with the string " 10px" with an initial space. That initial +space is less typical of JS animations, but is almost always there in +stylesheets or full declarations like "width: 10px". This microbenchmark +was used to test the effect of some specific code changes. Regressions +here may be acceptable if Servo_StyleSheet_FromUTF8Bytes_Bench is not +affected. + +History of tp tests +******************* + +tp +== + +The original tp test created by Mozilla to test browser page load time. +Cycled through 40 pages. The pages were copied from the live web during +November, 2000. Pages were cycled by loading them within the main +browser window from a script that lived in content. + +tp2/tp_js +========= + +The same tp test but loading the individual pages into a frame instead +of the main browser window. Still used the old 40 page, year 2000 web +page test set. + +tp3 +=== + +An update to both the page set and the method by which pages are cycled. +The page set is now 393 pages from December, 2006. The pageloader is +re-built as an extension that is pre-loaded into the browser +chrome/components directories. + +tp4 +=== + +Updated web page test set to 100 pages from February 2009. + +tp4m +==== + +This is a smaller pageset (21 pages) designed for mobile Firefox. This +is a blend of regular and mobile friendly pages. + +We landed on this on April 18th, 2011 in `bug +648307 `__. This +runs for Android and Maemo mobile builds only. + +tp5 +=== + +Updated web page test set to 100 pages from April 8th, 2011. Effort was +made for the pages to no longer be splash screens/login pages/home pages +but to be pages that better reflect the actual content of the site in +question. There are two test page data sets for tp5 which are used in +multiple tests (i.e. awsy, xperf, etc.): (i) an optimized data set +called tp5o, and (ii) the standard data set called tp5n. + +tp6 +=== + +Created June 2017 with recorded pages via mitmproxy using modern google, +amazon, youtube, and facebook. Ideally this will contain more realistic +user accounts that have full content, in addition we would have more +than 4 sites- up to top 10 or maybe top 20. + +These were migrated to Raptor between 2018 and 2019. + +.. _geometric mean: https://wiki.mozilla.org/TestEngineering/Performance/Talos/Data#geometric_mean +.. _ignore first: https://wiki.mozilla.org/TestEngineering/Performance/Talos/Data#ignore_first +.. _median: https://wiki.mozilla.org/TestEngineering/Performance/Talos/Data#median -- cgit v1.2.3