web_benchmarks 4.0.0 copy "web_benchmarks: ^4.0.0" to clipboard
web_benchmarks: ^4.0.0 copied to clipboard

A benchmark harness for performance-testing Flutter apps in Chrome.

web_benchmarks #

A benchmark harness for Flutter Web apps. Currently only supports running benchmarks in Chrome.

Writing a benchmark #

An example benchmark can be found in testing/test_app/benchmark/web_benchmark_test.dart.

A web benchmark is made of two parts: a client and a server. The client is code that runs in the browser together with the benchmark code. The server serves the app's code and assets. Additionally, the server communicates with the browser to extract the performance traces.

Analyzing benchmark results #

After running web benchmarks, you may want to analyze the results or compare with the results from other benchmark runs. The web_benchmarks package supports the following analysis operations:

  • compute the delta between two benchmark results
  • compute the average of a set of benchmark results
import 'dart:convert';
import 'dart:io';

import 'package:web_benchmarks/analysis.dart';

void main() {
  final BenchmarkResults baselineResults =
      _benchmarkResultsFromFile('/path/to/benchmark_baseline.json');
  final BenchmarkResults testResults1 =
      _benchmarkResultsFromFile('/path/to/benchmark_test_1.json');
  final BenchmarkResults testResults2 =
      _benchmarkResultsFromFile('/path/to/benchmark_test_2.json');

  // Compute the delta between [baselineResults] and [testResults1].
  final BenchmarkResults delta = computeDelta(baselineResults, testResults1);
  stdout.writeln(delta.toJson());

  // Compute the average of [testResults] and [testResults2].
  final BenchmarkResults average =
      computeAverage(<BenchmarkResults>[testResults1, testResults2]);
  stdout.writeln(average.toJson());
}

BenchmarkResults _benchmarkResultsFromFile(String path) {
  final File file = File.fromUri(Uri.parse(path));
  final Map<String, Object?> fileContentAsJson =
      jsonDecode(file.readAsStringSync()) as Map<String, Object?>;
  return BenchmarkResults.parse(fileContentAsJson);
}
9
likes
130
points
15.6k
downloads

Publisher

verified publisherflutter.dev

Weekly Downloads

A benchmark harness for performance-testing Flutter apps in Chrome.

Repository (GitHub)
View/report issues
Contributing

Topics

#benchmarking #performance

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

collection, flutter, logging, meta, path, process, shelf, shelf_static, web, webkit_inspection_protocol

More

Packages that depend on web_benchmarks