Skip to content

Commit 4a33136

Browse files
Add benchmarks for single-threaded Skwasm. (#158027)
This adds benchmarks that run on single threaded skwasm.
1 parent 8591d0c commit 4a33136

File tree

8 files changed

+58
-5
lines changed

8 files changed

+58
-5
lines changed

.ci.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1554,6 +1554,25 @@ targets:
15541554
- bin/**
15551555
- .ci.yaml
15561556

1557+
- name: Linux web_benchmarks_skwasm_st
1558+
recipe: devicelab/devicelab_drone
1559+
bringup: true
1560+
presubmit: false
1561+
timeout: 60
1562+
properties:
1563+
dependencies: >-
1564+
[
1565+
{"dependency": "android_sdk", "version": "version:35v1"},
1566+
{"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}
1567+
]
1568+
tags: >
1569+
["devicelab"]
1570+
task_name: web_benchmarks_skwasm_st
1571+
runIf:
1572+
- dev/**
1573+
- bin/**
1574+
- .ci.yaml
1575+
15571576
- name: Linux web_long_running_tests_1_5
15581577
recipe: flutter/flutter_drone
15591578
timeout: 60

TESTOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@
292292
/dev/devicelab/bin/tasks/web_benchmarks_canvaskit.dart @yjbanov @flutter/web
293293
/dev/devicelab/bin/tasks/web_benchmarks_html.dart @yjbanov @flutter/web
294294
/dev/devicelab/bin/tasks/web_benchmarks_skwasm.dart @eyebrowsoffire @flutter/web
295+
/dev/devicelab/bin/tasks/web_benchmarks_skwasm_st.dart @eyebrowsoffire @flutter/web
295296
/dev/devicelab/bin/tasks/windows_home_scroll_perf__timeline_summary.dart @jonahwilliams @flutter/engine
296297
/dev/devicelab/bin/tasks/windows_startup_test.dart @loic-sharma @flutter/desktop
297298
/dev/devicelab/bin/tasks/windows_desktop_impeller.dart @jonahwilliams @flutter/engine
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
{{flutter_js}}
22
{{flutter_build_config}}
3+
4+
const searchParams = new URLSearchParams(window.location.search);
5+
const forceSt = searchParams.get('force_st');
6+
const extraConfig = forceSt ? {forceSingleThreadedSkwasm: true} : {};
37
_flutter.loader.load({
48
config: {
59
// Use the local CanvasKit bundle instead of the CDN to reduce test flakiness.
610
canvasKitBaseUrl: "/canvaskit/",
11+
...extraConfig,
712
},
813
});

dev/devicelab/bin/tasks/web_benchmarks_canvaskit.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ Future<void> main() async {
1010
await task(() async {
1111
return runWebBenchmark((
1212
webRenderer: 'canvaskit',
13-
useWasm: false
13+
useWasm: false,
14+
forceSingleThreadedSkwasm: false,
1415
));
1516
});
1617
}

dev/devicelab/bin/tasks/web_benchmarks_html.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ Future<void> main() async {
1010
await task(() async {
1111
return runWebBenchmark((
1212
webRenderer: 'html',
13-
useWasm: false
13+
useWasm: false,
14+
forceSingleThreadedSkwasm: false,
1415
));
1516
});
1617
}

dev/devicelab/bin/tasks/web_benchmarks_skwasm.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ Future<void> main() async {
1010
await task(() async {
1111
return runWebBenchmark((
1212
webRenderer: 'skwasm',
13-
useWasm: true
13+
useWasm: true,
14+
forceSingleThreadedSkwasm: false,
1415
));
1516
});
1617
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright 2014 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'package:flutter_devicelab/framework/framework.dart';
6+
import 'package:flutter_devicelab/tasks/web_benchmarks.dart';
7+
8+
/// Runs all Web benchmarks using the Skwasm rendering backend.
9+
Future<void> main() async {
10+
await task(() async {
11+
return runWebBenchmark((
12+
webRenderer: 'skwasm',
13+
useWasm: true,
14+
forceSingleThreadedSkwasm: true,
15+
));
16+
});
17+
}

dev/devicelab/lib/tasks/web_benchmarks.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const int chromeDebugPort = 10000;
2323
typedef WebBenchmarkOptions = ({
2424
String webRenderer,
2525
bool useWasm,
26+
bool forceSingleThreadedSkwasm,
2627
});
2728

2829
Future<TaskResult> runWebBenchmark(WebBenchmarkOptions benchmarkOptions) async {
@@ -142,8 +143,9 @@ Future<TaskResult> runWebBenchmark(WebBenchmarkOptions benchmarkOptions) async {
142143
final bool isUncalibratedSmokeTest = io.Platform.environment['CALIBRATED'] != 'true';
143144
// final bool isUncalibratedSmokeTest =
144145
// io.Platform.environment['UNCALIBRATED_SMOKE_TEST'] == 'true';
146+
final String urlParams = benchmarkOptions.forceSingleThreadedSkwasm ? '?force_st=true' : '';
145147
final ChromeOptions options = ChromeOptions(
146-
url: 'http://localhost:$benchmarkServerPort/index.html',
148+
url: 'http://localhost:$benchmarkServerPort/index.html$urlParams',
147149
userDataDirectory: userDataDir,
148150
headless: isUncalibratedSmokeTest,
149151
debugPort: chromeDebugPort,
@@ -171,7 +173,13 @@ Future<TaskResult> runWebBenchmark(WebBenchmarkOptions benchmarkOptions) async {
171173
throw 'Benchmark name is empty';
172174
}
173175

174-
final String namespace = '$benchmarkName.${benchmarkOptions.webRenderer}';
176+
final String webRendererName;
177+
if (benchmarkOptions.useWasm && benchmarkOptions.forceSingleThreadedSkwasm) {
178+
webRendererName = 'skwasm_st';
179+
} else {
180+
webRendererName = benchmarkOptions.webRenderer;
181+
}
182+
final String namespace = '$benchmarkName.$webRendererName';
175183
final List<String> scoreKeys = List<String>.from(profile['scoreKeys'] as List<dynamic>);
176184
if (scoreKeys.isEmpty) {
177185
throw 'No score keys in benchmark "$benchmarkName"';

0 commit comments

Comments
 (0)